wx.onAppShow是小程序提供的api,用来监听小程序切换至前台。
场景:
onAppShow设置在页面的onLoad中,第一次进入小程序切换前后台时,onAppShow正常触发,但后续再将小程序切到后台,再通过对话中的小程序卡片重新进入小程序,从这时开始,每重复操作一遍,onAppShow就会多触发一次,同时锁屏解锁也会触发多次监听时间。
解析:
每次通过卡片进入小程序时,并非正常的前后台切换,所以会触发onLoad钩子,导致每次都会设置一个新的监听事件onAppShow,此时上一个onAppShow还在监听,所以造成了越来越多的事件触发。
解决方案:
在onLoad开头先通过wx,offAppShow()卸载一次监听,这样就能保证每次触发onLoad时只会设置一个监听事件,但注意,虽然放在onUnload中可能会更符合逻辑,但小程序页面只有在清除当前页面栈时才会触发onUnload…其次在使用wx.offAppShow()时,注意不要传回调,可能会导致api没有正常触发。(也可能是因为我用的Taro的原因)
onLoad(){
console.