从 Vue-Router 调用 vuex getter

Posted

技术标签:

【中文标题】从 Vue-Router 调用 vuex getter【英文标题】:Call vuex getters from Vue-Router 【发布时间】:2016-08-10 20:35:46 【问题描述】:

是否可以从路由器调用 vuex getter? 我需要从 beforeach 钩子中检查布尔变量的状态:

router.beforeEach(function ( to, next ) 
    if (to.path !== '/login') 
        // return a Promise that resolves to true or false
        return the-needed-variable-from-store;
     else 
        next()
    
)
如何获取和检查从商店派生的变量?

非常感谢!

【问题讨论】:

只需导入存储路由器文件 "import store from '../store'" 并返回存储值 "return store.getters" 但是如果你想访问存储的值路由,最好使用 vue-router-sync 包 【参考方案1】:

这里有一个讨论:https://github.com/vuejs/vuex-router-sync/issues/3#issuecomment-200192468

我能够以一种相当荒谬的方式访问该变量:

router.beforeEach((transition)=>
    if(transition.to.auth)
        if(!transition.to.router.app.$store.state.auth.authorized)
            transition.abort()
            router.go(path:"/")
        
    
    transition.next()
);

所以在你的情况下,它可能看起来像 to.router.app.$store.state

【讨论】:

以上是关于从 Vue-Router 调用 vuex getter的主要内容,如果未能解决你的问题,请参考以下文章

在 Vuex 商店中使用 vue-router

如何在 vuex 商店中使用 vue-resource ($http) 和 vue-router ($route)?

详解基于vue,vue-router, vuex以及addRoutes进行权限控制

pinia与vuex对比

使用 Vuex 和 vue-router

Vuex 状态和 vue-router