vuex 模块化之后如何调用其他模块的方法、属性、以及传值
vuex如何跨模块获取数据、调用方法
·
在vue中,当需要模块与模块之间需要跨模块调用方法时,使用rootState 用于获取其他模块state
相关的代码实例如下所示
/**
* @desc 获取阶段数据(示例)
* @desc rootState 用于获取其他模块state
*/
getStageProcessData({ commit, getters, dispatch, rootState }) {
return new Promise((resolve, reject) => {
const processId = getters.activeProcessId;
const accountType = rootState.user.user.account_type;
if (processId > 0) {
fetchCandidateAnalysisData({
processId: processId,
accountType: accountType,
}).then(
({ data_ }) => {
console.log(data_, "获取数据");
/**
* @desc 调用其他模块的方法
* @desc 第一个参数:调用方法的路径
* 第二个参数:传值 注意:即使不需要传值,也需要预留位置
* 第三个参数:配置选项,申明该actions不是当前模块的
*/
dispatch(
"candidate/setApplicationAnalysis",
{
data: data_,
},
{
root: true,
},
);
},
(err) => {
if (err && err.info && err.info.status == 2) {
this.displayUpgradePage = true;
}
this.analysisLoading = false;
},
);
}
});
},
调用其他模块的state 和muation\getters同理
state
但是需要使用{root:true}表明该数据是来自于其他模块的
commit('vip/receive', data, {root: true})
getters的调用方法如下
rootGetters["vip/get"]
state和getters的一样
rootState["vip/data"]
更多推荐
已为社区贡献1条内容
所有评论(0)