如何在 Vuex 中获取 Vue 路由器参数?

Posted

技术标签:

【中文标题】如何在 Vuex 中获取 Vue 路由器参数?【英文标题】:How to get Vue Router Params in Vuex? 【发布时间】:2018-11-22 06:26:41 【问题描述】:

我无法使用

this.$route.params
route.params
router.params

如何在我的操作中获取 $route 的参数?

【问题讨论】:

带有“vuex”的意思是在store.js里面吗? 在调用this.$store.dispatch('whatever', route: this.$route)时将其作为参数传递 @Fabio 是在模块中的 store.js 内。 @Christophe 是的,这就是我所做的,但想知道是否可以在 store.js 中调用它 我不确定你是否可以直接这样做。它绝对更容易测试,并且是推荐的将其传递给操作的方法,而不是从存储区到全局变量。 【参考方案1】:

在您的 actions.js 或 store.js 中

import router from 'path/to/router'
console.log(router.currentRoute.params)

【讨论】:

【参考方案2】:

你可以通过 Vuex 的 state 或 rootState 访问当前路由。

如果动作在模块中,使用rootState:

MY_ACTION: (rootState) => new Promise((resolve, reject) => 
    let params = rootState.route.params
    // do stuff

如果动作不在模块中,使用状态:

MY_ACTION: (state) => new Promise((resolve, reject) => 
    let params = state.route.params
    // do stuff

有关上下文对象的更多信息,请参阅https://vuex.vuejs.org/api/#actions。

【讨论】:

以上是关于如何在 Vuex 中获取 Vue 路由器参数?的主要内容,如果未能解决你的问题,请参考以下文章

如果我在 vue 路由器中有多个带有输入字段的组件,我应该如何获取数据并将其存储在 vuex 中?

vue 路由传参数和隐藏参数

如何在vue中实现路由跳转判断用户权限功能

vue-cli之路由独立成JS文件之后,如何在路由中获取vuex属性或者设置国际化i18n的当前使用语言

后端开发者的Vue学习之路

VUE—路由vuex state