如果在小程序之间设置跳转的话,那么就是涉及到小程序的运行机制、小程序生命周期的问题:
前台和后台
前台是在小程序启动之后,页面呈现给用户时小程序处在“前台”的状态;
后台时是在我们关闭小程序或者是离开小程序的时候,小程序没有终止运行,而是处于“后台”的状态,依旧在运行一段时间。当然,如果我们在很长一段时间内没有进入小程序或者是微信的系统资源紧张时,小程序才会被销毁【终止运行】。
那么小程序的启动方式可以划分为两种:
1、冷启动:我们首次进入小程序或者是在小程序被销毁之后进入小程序,这时候打开的小程序是需要重新加载启动。这样的启动方式称之为冷启动;
2、热启动:在短时间内再次打开小程序,这时小程序没有被销毁,只是从后台进到前台而已
两个小程序之间的跳转:
wx.navigateToMiniProgram():打开目标小程序,可以通过两种方式给目标小程序传递参数
一、通过path路径中?后的部分设置参数,在目标小程序中的App.onLaunch、App.onShow 和 Page.onLoad的回调函数获取这些参数,或者是通过wx.getLaunchOptionsSync()方法获取参数
二、通过wx.navigateToMiniProgram()方法的extraData属性向目标小程序传递参数,这些参数在目标小程序的App.onLaunch,App.onShow中获取,或者是wx.getLaunchOptionsSync()方法中获取这份参数。
wx.navigateBackMiniProgram():返回上一个小程序,在extraData属性中设置参数,在上一个小程序中的App.onShow获取参数。
在两个小程序之间获取对方传递的完整参数,是在App.onShow()中获取,而App()只能在app.js中设置,那所获取到的参数只能赋值给全局变量了【globalData】,然后在需要参数的页面中通过getApp()获取全局参数。
如果不想从app.js中获取数据,也可以在当前页面中获取参数【需要使用wx.getLaunchOptionsSync()和wx.getEnterOptionsSync()】
wx.getLaunchOptionsSync():获取小程序启动时的参数,这个方法只获取到冷启动时的参数;
wx.getEnterOptionsSync():获取小程序启动时的参数,这个方法可以获取冷启动或者是热启动时传递参数
如果从小程序A跳转到小程序B的时,在短时间内返回小程序A,那么建议使用wx.getEnterOptionsSync()获取小程序B返回的参数,如果A跳转到B之后,很长一段时间后【小程序A已经被销毁了】才返回,可以使用wx.getLaunchOptionsSync()方法,也可以使用wx.getEnterOptionsSync()方法获取参数
文章评论