1.场景值的概念
大概意思就是小程序是怎么被启动的,通过扫码?还是通过点击群里小程序分享卡片?或者其他,每种启动入口对应一个场景值,目前有80多种场景值。
2.场景值什么时候被赋值的
小程序是在程序启动时被赋值的,也就是app.js中的onLaunch之前,这也是为什么场景值不稳定的原因,经常会发生明明是从分享卡片入口进来的,却出现扫码进入的场景值或者其他如1044、1001等等,肯定是因为小程序在从分享卡片入口进来之前一定通过其他方式启动过,不信你可以杀死小程序在从分享卡片进来就会表现正常了。
3.这会产生什么影响?
分享卡片进到目标页面的想退回主页,发现退不回去了,直接redirectTo到主页,会影响主页进入目标页面再返回的效果,本来那么多场景值就够烦人了,现在还不那么准确。
4.这个问题的解决方案
从上述内容看来,利用场景值解决退回主页的方案是行不通的,怎么办呢?果断抛弃,可以参考如下代码
var pages = getCurrentPages()
if(pages.length==1){
wx.redirectTo({
url: '../index/index',
})
}else{
wx.navigateBack({
delta: 1,
})
}
上述代码的意思就是从分享卡片进来的栈中一定只存在一个页面,从主页进来的一定存在多个页面,存在多个页面即认为可返回,存在一个页面就要redirectTo了