获取参数
假设两个小程序:A和B
从A跳转到B,返回到A之后,获取从小程序B返回的参数:
通过wx.getLaunchOptionsSync()和wx.getEnterOptionsSync()获取返回的参数。这两个方法虽然都是获取小程序启动时的参数【从小程序B返回到小程序A,其实也是启动了小程序A】,然而小程序在启动之后,页面呈现出来时它处在“前台”的状态中,当我们点击上角关闭小程序或者是离开微信时,小程序并没有立即终止运行,而是从“前台”进入“后台”的状态,它还在运行一段时间【小程序没有被销毁,这个运行的时间取决于微信的内存被占用情况而定。当然就算是微信的资源不紧张,并且用户关闭小程序的时间足够久,小程序也会被销毁。】
那么冲小程序A跳转到小程序B再返回A的过程中,小程序A再次启动时可能会有两种方式:
1、冷启动:小程序被销毁之后再次启动;
2、热启动:小程序未被销毁就再次启动。
wx.getLaunchOptionsSync()
该方法获取小程序启动时的参数,和 App.onLaunch回调的参数一致,而onLaunch是在小程序初始化时启动。所以通过该方法来获取从小程序B返回参数,有时候不稳定而导致拿不到相关的参数;
wx.getEnterOptionsSync()
使用该方法来获取小程序启动时的参数,如果小程序时冷启动,那么获取的参数和App.onLaunch回调参数一致;如果小程序时热启动,那么该方法返回的参数和App.onShow回调参数一致。使用该方法获取参数相对来说比较稳定一些。
以上方式都是在app.js中获取参数,此时这些参数是可以全部共享了,在其他需要使用过这些参数时,直接通过getApp()拿到。
另外,小程序A从小程序B只能返回到上一次离开的页面,所以可以直接通过getApp()获取参数时,可以在需要参数的页面中直接使用wx.getEnterOptionsSync()方法拿到对应的参数。那么在页面的生命周期中,到底是在哪个方法中获取参数呢?
小程序的生命周期
小程序页面常见的生命周期:
onLoad、onShow、onReady、onHide、onUnload
onLoad:页面创建的时候触发
onShow:页面显示时触发
onReady:页面首次渲染触发
onHide:页面隐藏,也就是页面从前台切换到后台是触发该事件
onUnload:页面卸载时触发。
很显然,只能在onLoad和onShow方法中获取参数。如果用户在小程序B中停留时间很短,而小程序A还在运行的时候返回小程序A,那就没有触发onLoad。所以不论用户在小程序B中停留多久,当用户回到小程序A时,在onShow方法中获取参数是比较理想的方式!
文章评论