最近在做钉钉小程序时发现一个问题,就是小程序点击返回按钮时和企业内部应用开发,三方应用开发是不同的,没办法监听返回事件,就算是在页面onHide 或者页面onUnload的做一些操作,会发现如果你的页面栈很深的话,还是会乱跳,后来就又回去看钉钉的官方文档,里边是这样解释的。
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,// 而 redirectTo 方法则不会。见下方示例代码
例如:
首页进入,页面栈长度就变成1,
navigateTo跳转到login
这个时候页面栈长度就变成2,
在用navigateTo跳转一层,页面栈长度为3
当点击左侧返回的时候,页面栈就会减少1
或者
dd.navigateBack({
delta: 1
})
页面栈减少1
当有tabbar页面时,如果直接用dd.switchbar那么页面找就会清空,恢复到首页,页面栈只剩下一个
当你在当前页面要跳转下一个页面,但是又不想当前页面加入页面栈,就用redirectTo
你会发现页面跳转了,页面栈的最后一个变成了你要跳转的那个页面栈
例如 1,2,3,4页面
1navigateTo2,2navigateTo3,3navigateTo4,再4页面点击返回会回到3
1navigateTo2,2navigateTo3,3redirectTo4,再4页面点击返回会回到2