在分享场景(小程序码,or分享卡片)中,都会携带一个目标页。
是否能在生命周期中拦截掉跳转目标页的行为,而直接导向到其他页面。 例如在app.onShow中发现未登录,直接跳转到登陆页。
现在的设计好像无法阻止掉默认跳转的行为,导致大家在设计架构时,必须加入启动页或者首页。(例如小红书,定位到首页,再有首页转发,实际体验惨不忍睹)
————更新————
希望能提供一个全局路由守卫钩子,无论是switchTab 还是relaunch等,涉及到此小程序路由变化时,能够进行拦截。(现在还有新的场景,例如直播时商品的跳转)
有解决方案吗?
router/index.js const methods = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack'] function setRouterHook() { wx.beforehook = function (next) { const flag = true debugger if (flag) { // 如果通过拦截逻辑则直接调用next()函数即可,否则则不跳转,进行自定义逻辑处理 next() } else { console.log('用户无权限') } } methods.forEach(method => { wx[`$${method}`] = function (options) { if (wx.beforehook) { wx.beforehook(()=> { wx[method](options) }) } else { wx.method(options) } } }) } export default setRouterHook
app.js import setRouterHook from './router/index' App({ onLaunch: function () { // 在这里调用 setRouterHook() }}) 然后使用方法 只需要在微信官方提供的原生导航方法加上$即可 //原本 wx.navigateTo({ url: '../logs/logs' }) // 调整后 wx.$navigateTo({ url: '../logs/logs' })
只要使用这个方法,就可以做到所有页面跳转的时候做拦截
希望可以帮到你
加个中转页,中转页进行页面的导向,判断页面应该进入哪里
你在app.json的onLaunch函数里面加个页面跳转的不就好了