工作中微信小程序遇到的坑(记录一下)

由于业务需求,小程序需要做到根据场景的不同进入不同的页面

场景分别是

场景一:通过扫描二维码进入今日报价功能(测试数据)

工作中微信小程序遇到的坑(记录一下)_第1张图片

场景二:通过微信发现通知栏小程序点击进入公司列表(测试数据)

工作中微信小程序遇到的坑(记录一下)_第2张图片

就这样根据不同场景进入不同页面,微信小程序也提供了不同的场景(具体请看开发文档)

因此需要:发现栏小程序主入口(1001)和扫描二维码(1011)两个场景值

获取场景可以通过生命周期函数获取,例如:onShow,onLaunch。通过生命周期函数参数scene就可以获取场景值,例如:

onShow:function(options){

console.log(options.scene)//输出场景值

}

就这样获取到场景值之后就可以根据不同场景进入不同页面了,通过路由管理的页面重定向wx.redirectTo实现页面跳转(具体请看开发文档)

坑就在这里了!!

在onShow生命周期函数中,安卓手机通过wx.redirectTo是可以重定向成功,但苹果就会失败,百度了一圈,谷歌了一轮,还是没找到问题所在,然后就输出了一下失败回调函数的错误日志看看

报:

errMsg  redirectTo:fail no page

就是说页面没有加载,然后我自己就猜想是不是苹果在页面没完全加载完wx.redirectTo就已经结束了,所以报找不到页面的错误,但安卓就不会呢??(难道。。。)后来我添加了一个setTimeout定时函数测试了一下,果然延迟了100毫米之后苹果是可以重定向了。但这不是我想要的业务情景,因为加了延时,会看到默认页面的短暂一瞬间才重定向到另外一个页面。

现在处理的方法是在定义一个全局的场景值,然后在默认页面加载的时候再去做判断场景值,然后再重定向,还没想到更好的处理方法。。

你可能感兴趣的:(工作中微信小程序遇到的坑(记录一下))