2016-12-28 5 views
6

Я хочу получить state.session в instance.js от records_view.js. Как это достигается?Vuex: состояние доступа от другого модуля

магазин/модули/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 
    } 
}); 

ответ

15

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

let session = context.rootState.instance.session; 

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

0

Вам нужно определить session в вашем государстве, как следующий, чтобы получить доступ к нему в вашем getters:

const state = { 
    session: '' 
} 

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

+0

У меня есть все, что вы упомянули здесь. Я могу получить доступ к сеансу изнутри компонента, но я не уверен, как получить доступ к сеансу из другого модуля Vuex (т. Е. Records_view.js). – Donnie

+1

@Donnie try 'context.rootState.instance.session' – Saurabh

2

из действия:

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

    }, 
+0

Хотя это может ответить на вопрос, всегда полезно дать объяснение, почему код работает со ссылками. –

Смежные вопросы