在不同模块的突变中访问rootState

时间:2017-04-19 11:38:04

标签: javascript vue.js vuejs2 vuex

我有几个vuex个模块。为简单起见,我将以我所面对的一个例子来解释我的问题:

我有2个vuex模块 firstModule.js secondModule.js

firstModule.js 的状态为myArray[ ]

//firstModule

const state = {
    myArray: [//has some items]
} 

secondModule.js 中,我有一个从外部API异步提取某些数据的操作。

此操作会提交一个变异,该变异应搜索 firstModule&#39> myArray[ ]

中提取的数据是否存在
  • 如果获取的数据出现在 firstModule myArray[ ]中,则将其添加到 secondModule&#39> s {{1 }}

    newArray[ ]

但是,问题在于:

  • 根据docs模块中的突变无法访问 rootState ,只有操作和获取者才能访问 rootState

  • 在突变中无法访问rootAtate,我如何执行上面执行的逻辑?

  • 我是否必须访问操作中的 rootState 并将其作为有效负载传递给已提交的突变,如上所述?

1 个答案:

答案 0 :(得分:2)

根据我的经验,vuex模块中的突变应该以他们描述的方式直接影响模型。因此,您的addToNewArray方法应该只将有效负载数据添加到州的newArray属性中。

操作是运行逻辑代码以确定是否进行突变的位置。您可以在myArray操作中对第一个模块的fetchData进行检查。这是最好的做法。

但是,如果您确实需要访问变异中的rootState变量,则必须将其作为变量引用传递,就像您目前一样。