Open virzs opened 2 years ago
可以提供一下当前 taro 和 tarojs-router-next 的版本信息吗,我这边尝试复现一下
可以提供一下当前 taro 和 tarojs-router-next 的版本信息吗,我这边尝试复现一下
"@tarojs/taro": "3.4.4", "tarojs-router-next": "^2.8.1",
因为现在要在微信中打开网页,所以就会出现这样的情况,另外开发时如果浏览器刷新,也会提示这个错误
这个其实是 Taro 为了统一 h5 和小程序体验导致的问题,在小程序里是可以保证页面栈不被破坏的,因为没有刷新按钮,但是在 h5 里面不行,用户刷新一下页面栈(taro 维护的页面栈)就只剩一个了,再调用 back
方法返回的时候就没有页面可以回退了
要解决这个问题其实你可以包装一下 back 方法,比如下面这样:
const originBack = Router.back
Router.back = function (...args) {
try {
return originBack(...args)
} catch (err) {
if (err instanceof NoPageException) {
// 在这里处理没有页面回退的情况,比如跳转到首页
Router.toHome()
}
}
}
这个其实是 Taro 为了统一 h5 和小程序体验导致的问题,在小程序里是可以保证页面栈不被破坏的,因为没有刷新按钮,但是在 h5 里面不行,用户刷新一下页面栈(taro 维护的页面栈)就只剩一个了,再调用
back
方法返回的时候就没有页面可以回退了要解决这个问题其实你可以包装一下 back 方法,比如下面这样:
const originBack = Router.back Router.back = function (...args) { try { return originBack(...args) } catch (err) { if (err instanceof NoPageException) { // 在这里处理没有页面回退的情况,比如跳转到首页 Router.toHome() } } }
感谢,一时间没想到还能这么写,back方法添加一个默认返回路径参数会不会更友好一点?
h5 端跳转外部网页后返回,会提示没有页面回退,这个如何解决呢?