getCurrentPages()的使用

getCurrentPages()的使用,第1张

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。 注意:

不要尝试修改页面栈,会导致路由以及页面状态错误。

不要在 App.onLaunch 的时候调用 getCurrentPages(),此时page 还没有生成。

熟悉页面栈后才能更好的使用getCurrentPages(),下面将列举几种常用的使用场景:

1、利用页面栈的长度

例如:进入小程序非默认首页时,需要提供返回首页的按钮或者执行其它事件

2、跨页面赋值

3、页面跳转后自动刷新

4、获取当前页面相关信息

以上就是我在微信小程序开发中经常会遇到的getCurrentPages()使用场景

通常小程序直接页面传值是通过 url 拼接或利用 storage 。

比如在订单确认页面需要进行收货地址选择会进入到地址选择页面,这个订单确认页面与地址选择页面的通讯就很头疼。

而 getCurrentPages() 刚好解决了这一难题。

使用方法

小程序加速度计api一共就三个方法。

1、wx.onAccelerometerChange(CALLBACK) 监听加速度数据,频率:5次/秒,接口调用后会自动开始监听,每调用一次就会注册一个。

2、wx.startAccelerometer(OBJECT) 开始监听方法

坑来了。。。没错就是第三方法

3、wx.stopAccelerometer(OBJECT) 停止监听,这个方法是停止了监听,再晃动手机不会走回调方法了, 但是它并不移除监听

那么问题来了,在某个页面每调用一次第一个api它就会注册一个监听,第三个api并不能移除掉监听,导致你再次开启的时候就会有多个回调方法在同时进行。就会出现问题。那么怎么避免呢?

解决方法:在微信小程序启动的时候就调用监听方法,在回到方法中通过pages能够获取到当前的页面,在当前页面调用你想回调的方法就好了。

onLaunch: function () {

    wx.onAccelerometerChange((e) =>{

       var pages = getCurrentPages()var currentPage = pages[pages.length - 1]

       if (currentPage.onAccelerometerChange) {

          currentPage.onAccelerometerChange(e)

       }

    })

}

之后就可以在当前页面中的onAccelerometerChange(e)方法做你想做的事情了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11810889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存