vue-router 中导航守卫问题

导航守卫

一开始我觉得导航守卫是要在写在main.js中,而后看了网上不少代码,发现这块是能够单独写成一个xxx.js文件,而后在main.js中引入进来,这样就是一个全局引入。固然在xxx.js中,须要将路由文件引入进来,否则你怎么操做路由呐。【思考脸】shell

而后对于next()的理解不是很透彻。segmentfault

查看官网,你会发现其实人家解释的很清楚。next() 会进行管道中的下一个钩子,这句话其实不是太过于明白,可是经过实例,能够暂时自理解为当你的导航变化时,知足你本身编写的条件时,就会进入它的下一个钩子函数中。函数

但当时的写的代码是这样的spa

if (to.path == '/' || to.path == '/upload-version') {
        next()
    } else {
        if (to.path == '/remote-shell') {
            next()
        } else {
            next()
        }
    }

当时个人想法觉得是,只要路由发生了变化,我在这边就须要进行判断来监听一下。后来想一想这样是有问题的呀,假如我配置的路由有不少path,难道我还要一个一个去比较啊,因此上面的方法确定是行不通的。因此我后期只判断了一个地址。code

router.beforeEach((to, from, next) => {
//首先判断是否有值
if (getPort() && getAddress()) {
    //有 直接给stroe赋值
    var ipp = { port: getPort(), address: getAddress() }
    console.log(ipp);
    //若是getters中没有值就赋值
    console.log(store.getters.gethip);
        if (store.getters.geti == '') {
            console.log("有没有有没有没有")
            store.dispatch('choicePort', ipp).then(() => {
                console.log(store.getters);
            }).catch(() => { })
            store.dispatch("registerMessageListener").then().catch()
            next()
        }else{
            next();
        }
} else {
    //没有 跳转到选择页面中去,配置地址
  if ((to.path) == '/xxxx') {
        next()
    } else {
        next('/xxx');
    }
}

直接经过next()就能够完成跳转了不用每次路由变化就去判断router


这是之前提的一个问题ip

相关文章
相关标签/搜索