- 小程序缓存导致的问题
小程序退至后台,并不会立刻销毁,而是大概5分钟后才会销毁。
所以在5分钟内重新进入小程序的话,上一次设置的store里面的值,还保留着,不会因为重新进入小程序而初始化store里面的值。
- 从而导致的错误:
假如小程序需要区别不同场景进去表现不一样:
场景1:从搜索出来的小程序进入(小程序链接带noscan=1的参数,表示非扫码场景)
场景2:从扫码进入(小程序链接不带noscan=0的参数,不带参数默认是扫码场景)
app的onShow里面取出options.query.noscan赋值给store里面的noscan,根据noscan的不同,做不同的展示。
第一次通过搜索进入小程序,store.noscan = 1,在未销毁小程序的时间内通过扫码第二次进入小程序,因为扫码链接里面没带noscan=0,所以app的onShow里面取不出options.query.noscan赋值给store里面的noscan,保持着store.noscan=1的状态(store.noscan=1表示非扫码场景),即导致错误
- 解决的方案是:
H5里面,可以设置成:不带url某个参数的时候,默认某个参数为0。因为H5每次进入页面,都是初始化后的,不会缓存上一次进入页面设置的参数。
而小程序因缓存问题,不能不带url参数,带了noscan=0就能解决缓存上一次参数的问题。
预期:
1.非扫码场景进入,store.noscan=1
2. 扫码场景进入,store.noscan=0
onShow逻辑改变↓
解决方案(url都传noscan)↓
- 从其他地方返回小程序
有以下场景:
1. 小程序中打开H5页面,然后关闭H5,重新返回小程序
2. 在当前小程序中,切到其他app应用,再切回微信返回小程序
这些场景下,重新返回小程序,都会触发小程序的onShow,和从微信进入小程序触发的onShow不同点在于:
前者:重新返回小程序的时候取不到options的参数
后者:取得到options的参数