Подтвердить что ты не робот

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
  }
});
4b9b3361

Ответ 1

state ссылается на локальное состояние и rootState следует использовать при доступе к состоянию других модулей.

let session = context.rootState.instance.session;

Документация: https://vuex.vuejs.org/en/modules.html

Ответ 2

из действия:

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

  },

Ответ 3

Для меня у меня были модули vuex, но нужна была мутация для обновления STATE в другом файле. Был в состоянии сделать это, добавив ЭТОТ

Даже в модуле вы можете видеть, к какому глобальному состоянию у вас есть доступ через console.log(this.state)

const mutations = {
MuteChangeAmt(state, payload) {
//From user module; Need THIS keyword to access global state
this.state.user.payees.amount = payload.changedAmt;
 }
}

Ответ 4

Вам нужно определить session в вашем состоянии, как показано ниже, для доступа к нему в getters:

const state = {
  session: ''
}

Вам нужно написать mutation, который будет вызываться из ваших действий, чтобы установить это значение состояния.