收藏
回答

小程序如何阻止启动自动跳转?

在分享场景(小程序码,or分享卡片)中,都会携带一个目标页。

是否能在生命周期中拦截掉跳转目标页的行为,而直接导向到其他页面。 例如在app.onShow中发现未登录,直接跳转到登陆页。

现在的设计好像无法阻止掉默认跳转的行为,导致大家在设计架构时,必须加入启动页或者首页。(例如小红书,定位到首页,再有首页转发,实际体验惨不忍睹)

————更新————

希望能提供一个全局路由守卫钩子,无论是switchTab 还是relaunch等,涉及到此小程序路由变化时,能够进行拦截。(现在还有新的场景,例如直播时商品的跳转)


最后一次编辑于  2020-06-04
回答关注问题邀请回答
收藏

4 个回答

  • 四月一
    四月一
    2021-05-31

    有解决方案吗?

    2021-05-31
    有用
    回复
  • 2020-11-22
    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({
      onLaunchfunction () {
    // 在这里调用
    setRouterHook() 
    }})
     然后使用方法 只需要在微信官方提供的原生导航方法加上$即可
    //原本
        wx.navigateTo({
          url'../logs/logs'
        })
    // 调整后
        wx.$navigateTo({
          url'../logs/logs'
        })
    


    只要使用这个方法,就可以做到所有页面跳转的时候做拦截


    希望可以帮到你

    2020-11-22
    有用
    回复
  • 楼小仙
    楼小仙
    2020-06-04

    加个中转页,中转页进行页面的导向,判断页面应该进入哪里

    2020-06-04
    有用
    回复 1
    • 陈三百
      陈三百
      2020-06-04
      目前是这样,但是微信本身没有开放跳转动画,所以实际体验稀烂
      2020-06-04
      回复
  • asuper
    asuper
    2020-06-04

    你在app.json的onLaunch函数里面加个页面跳转的不就好了

    2020-06-04
    有用
    回复 3
    • 陈三百
      陈三百
      2020-06-04
      但是默认的跳转行为还是会执行,要解决的也就是这个问题。
      2020-06-04
      回复
    • asuper
      asuper
      2020-06-04回复陈三百
      那就从你的登陆页下手,把你校验用户是否登陆的逻辑从onlaunch移走
      2020-06-04
      回复
    • 陈三百
      陈三百
      2020-06-04
      登陆页只是一个例子... 这其实是小程序分享管理的一个设计问题。
      2020-06-04
      回复
登录 后发表内容
问题标签