Vuex:从另一个模块访问状态

新手上路,请多包涵

我想从 --- 访问 state.session 中的 instance.js records_view.js 。这是如何实现的?

存储/模块/instance.js

 const state = {
  // This is what I want to access in records_view.js
  session: {}
};

const getters = {
  sessionGetter: state => state.session
};

存储/模块/records_view.js

 const actions = {
  getSettingsAction (context, props) {
    // This is how I'm trying to access session, which doesn't work
    let session = context.state.instance.session;

    Api(
      context,
      {
        noun: props.noun,
        verb: 'GetRecordsViewSettings',
        orgUnitKey: _.has(session, 'orgunit.key') ? session.orgunit.key : '',
        data: {}
      },
      props.callback
    );
  }
};

这是为了增加一点上下文。

存储/index.js

 import Vue from 'vue';
import Vuex from 'vuex';
import * as actions from './actions';
import * as getters from './getters';
import * as types from './mutation-types';

import instance from './modules/instance';
import recordsView from './modules/records_view';

Vue.use(Vuex);

export default new Vuex.Store({
  state,
  actions,
  getters,
  mutations,
  modules: {
    instance,
    recordsView
  }
});

原文由 Donnie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 450
2 个回答

state 引用本地状态,访问其他模块状态时应使用 rootState

 let session = context.rootState.instance.session;

文档: https ://vuex.vuejs.org/en/modules.html

原文由 Donnie 发布,翻译遵循 CC BY-SA 3.0 许可协议

从一个动作:

 'contacts:update' ({ commit, rootState }) {
    console.log('rootState', rootState.users.form)
    ......

  },

原文由 Thibault Van Campenhoudt 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题