如何使用来自另一个模块的模块内的 getter 进行 Vuex 状态
Posted
技术标签:
【中文标题】如何使用来自另一个模块的模块内的 getter 进行 Vuex 状态【英文标题】:How to Vuex state with a getter within a module from another module 【发布时间】:2019-09-04 14:18:49 【问题描述】:我正在用 VueJS 构建一个应用程序,但是 Vuex 模块给我带来了一些问题。
当我从另一个模块调用它时,我无法检索模块中的状态。
在我的 Vue Devtools Vuex getter 中: modA/mycustomer: 未定义
我已经阅读了 Vuex 网站上的所有文档,并尝试了一些在 *** 中已经给出的解决方案,但我迷路了。可能忽略了一些东西
我的商店.js
export default new Vuex.Store(
modules:
modA: moduleA,
modB: moduleB
)
模块A JS
export default
namespaced: true,
state:
customerId:0
,
getters:
customerId: state =>
return state.customerId
moduleB.js
export default
namespaced: true,
state:
orderId:0
,
getters:
orderId: state =>
return state.orderId
,
mycustomer: rootGetters =>
return rootGetters['modA/customerId']
我通常希望通过此请求获得 customerId。但只有未定义 跨模块需要一些状态。
【问题讨论】:
【参考方案1】:相关文档是Accessing Global Assets in Namespaced Modules,上面写着:
如果您想使用全局状态和 getter,
rootState
和rootGetters
作为 第三和第四个参数传递给 getter 函数,并且还作为传递给的上下文对象的属性公开动作函数。
所以如果你想在modB
模块中的mycustomer
getter中访问modA
模块的customerId
getter,应该是:
mycustomer(state, getters, rootState, rootGetters)
return rootGetters['modA/customerId']
【讨论】:
谢谢,现在我知道我错过了什么。我的错误是只接受一个论点。它解决了这个问题。干得好! 这个函数不需要调用吗?否则你只是返回 getter 函数 @Emobe 不,您不调用 getter,它们是使用Object.defineProperty
重新注册的,因此它们只是属性。以上是关于如何使用来自另一个模块的模块内的 getter 进行 Vuex 状态的主要内容,如果未能解决你的问题,请参考以下文章
使用具有多个模块的模块模式,一个模块中的事件监听器如何使用来自另一个模块的回调?
如何将一个模块内的类中的 pyqtSignal 连接到另一个模块内的类中的 pyqtSlot?