小程序onshow事件
by addy 原创文章,欢迎转载,但希望全文转载,注明本文地址。
问题描述
onShow 事件在小程序里面非常重要,场景之多,导致处理起来很复杂。很多业务场景依赖与onShow与onHide事件。比如分享给他人,在群里PK等等。
息屏,新页面返回、Home键操作,也会触发onShow事件。
以下是官网的说明:
Tip: 由于Android系统限制,目前还无法获取到按 Home 键退出到桌面,然后从桌面再次进小程序的场景值,对于这种情况,会保留上一次的场景值。
ios也对齐了这一点,所以,单靠场景值scene是无法区分上面三种场景触发的onShow,通过log发现还是有些不同。
真正不同的地方是:
从息屏,新页面返回、Home键操作这三种场景触发的onshow返回的参数是会把query参数清空。
所以这样一来,就能够真正的区分,这样逻辑就不会乱。这种hack方式不知道是不是小程序的一个bug,暂时可以避免这种问题。
案例
我在玩一个小游戏,分享到群里PK好友。
分享的query参数:from=pk
好友从群里打开:
wx.onshow(res => {
if(res.scene === 1044){
if(res.query.from){
// show pk UI
}else{
// todo nothing
}
}
})
如果是正常onshow逻辑,那么from就会为pk,而息屏再亮起后则query为undefined。因此就不会再次show pk UI。
本文为原创文章,可能会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,谢谢合作
个人知乎,欢迎关注:https://www.zhihu.com/people/iamaddy
欢迎关注公众号【入门游戏开发】
近期评论