onShareAppMessage分享分包页面,点进分享卡片进入小程序后路由未保留,被分享的页面变成了首页,导致返回键失效
处理方式:
做一个全局路由拦截,路由被清空时返回小程序首页
创建一个拦截器interceptor.js:
// 路由拦截
function addRouteInterceptor() {
// 增加一个返回键的拦截,从分享页面进入小程序,路由只有一级,这时点返回使其回到首页
uni.addInterceptor("navigateBack", {
invoke(e) {
let routes = getCurrentPages()
// console.log('navigateBack', routes)
if (routes.length > 1) {
return true
} else {
uni.reLaunch({
url: '/pages/index/index'
})
return false
}
}
})
}
export default {
addRouteInterceptor,
}
如果路由栈只有一个,那就重定向到首页
在App.vue的onLaunch里注册下路由拦截器
export default {
onLaunch: function(options) {
// 路由拦截
interceptor.addRouteInterceptor()
},
}