Vam*_*hna 5 javascript vue.js vuex vuejs2
我有几个vuex模块。为了简单起见,我将以一个我所面临的例子来说明我的问题:
我有2个vuex模块firstModule.js和secondModule.js
firstModule.js有myArray[ ]它的状态:
//firstModule
const state = {
myArray: [//has some items]
}
Run Code Online (Sandbox Code Playgroud)
在secondModule.js中,我有一个动作,该动作可以从外部API异步获取一些数据。
此操作会产生一个突变,该突变应搜索firstModule的是否存在获取的数据 myArray[ ]
如果获取的数据存在于firstModule的中 myArray[ ],则将其添加到secondModule的 newArray[ ]
const state = {
newArray: []
}
const mutations = {
addToNewArray: (state, payload) => {
function findIyem(value){
return value === payload.data;
};
var item = payload.rootData.myArray.find(findItem);
state.newArray.push(payload.data);
}
}
const actions = {
fetchData: ({commit, rootState}) => {
// fetches some data from external API
var fetched data = data // data is which I received from fetching
commit('addToAnotherArray', {data: data, rootData: rootState.firstModule.myArray}
}
}
Run Code Online (Sandbox Code Playgroud)但是,这是问题所在:
根据文档,模块中的突变无法访问rootState,只有操作和获取者才能访问rootState
在突变中无法访问rootAtate时,如何执行上述逻辑?
我是否需要像上述操作一样访问操作中的rootState并将其作为有效负载传递给已提交的变异?
根据我的经验,vuex模块中的突变应该以其描述的方式直接影响模型。因此,您的addToNewArray方法应该简单地将有效负载数据添加到状态的newArray属性中。
操作是您的逻辑代码应该运行的地方,以确定是否进行更改。你可以检查你的firstModule的myArray的范围内fetchData行动。这是最好的做法。
但是,如果您确实需要访问rootState突变中的变量,则必须像当前一样将其作为变量引用传入。
| 归档时间: |
|
| 查看次数: |
5922 次 |
| 最近记录: |