小程序开发实录

224 阅读2分钟
  1. 小程序缓存导致的问题

小程序退至后台,并不会立刻销毁,而是大概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. 从其他地方返回小程序

有以下场景:

1. 小程序中打开H5页面,然后关闭H5,重新返回小程序

2. 在当前小程序中,切到其他app应用,再切回微信返回小程序

这些场景下,重新返回小程序,都会触发小程序的onShow,和从微信进入小程序触发的onShow不同点在于:

前者:重新返回小程序的时候取不到options的参数

后者:取得到options的参数