146 votes

Vuex: accès à un autre module

Je veux accéder à state.session dans instance.js partir de records_view.js . Comment cela se fait-il?

store / modules / instance.js

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

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

store / modules / 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
    );
  }
};
 

C'est pour un peu de contexte supplémentaire.

store / 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
  }
});
 

190voto

Donnie Points 1538

state référence à l'état local et rootState doit être utilisé lors de l'accès à l'état des autres modules.

 let session = context.rootState.instance.session;
 

Documentation: https://vuex.vuejs.org/en/modules.html

78voto

d'une action:

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

  },
 

-5voto

Saurabh Points 29563

Vous devez définir session dans votre état comme suit, pour y accéder dans vos getters :

 const state = {
  session: ''
}
 

Vous devez écrire une mutation , qui sera appelée à partir de vos actions pour définir cette valeur d'état.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X