q***@qq.com
q***@qq.com
  • 发布:2022-09-18 00:35
  • 更新:2022-09-20 21:49
  • 阅读:284

#插件讨论# 【 gowiny-uni-router - t***@gowiny.com 】beforeEach前置拦截器内返回Promise时,resovle页面路径对象却不能跳转

分类:uni-app
关联插件: gowiny-uni-router

router.beforeEach前置拦截器内返回Promise时,resovle页面路径对象却不能跳转:

router.beforeEach((to,from)=>{  
    if(to.path != '/pages/login/login'){  
        return new Promise<BeforeEachResult>((success,fail)=>{  
            setTimeout(function(){  
                // 实际使用中,使用以下方法并没有跳转到指定的 /pages/login/login 页面  
                success({  
                    path:'/pages/login/login'  
                })  
            },1000)  
        })  
    }  
})

先success(true),再用 uni.navigateTo 方法也无法跳转;
最后把navigateTo方法放到SetTimeout里才能跳转,请问是我的用法不对吗?

2022-09-18 00:35 负责人:无 分享
已邀请:
t***@gowiny.com

t***@gowiny.com

请参考
演示项目:https://gitee.com/gowiny/uni-example
里的演示代码

router.beforeEach(async (to,from)=>{  
    console.log('beforeEach 2 ,',to,from)  

    const state:any = store.state  
    if(!state.user.logined && to.path?.startsWith("/pages/user/")){  
        console.log('您还未登录,请先登录')  
        return {  
            to:{//需要跳转的新页面  
                path:'/pages/login/login',  
                query:{  
                    url:to.fullPath  
                }  
            },  
            navType:'push'//跳转方式  

        }  
    }  

})

要回复问题请先登录注册