在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"]
Logo

前往低代码交流专区

更多推荐