2016-12-28 8 views
6

state.sessioninstance.jsrecords_view.jsにアクセスしたいとします。これはどのように達成されますか?Vuex:別のモジュールからのアクセス状態

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

instance.js

店/モジュール/これは、追加のコンテキストの少しのためのものです。

店/ 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

あなたgettersでそれにアクセスするには、以下のようなあなたの状態でsessionを定義する必要があります。

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

これは疑問に答えるかもしれませんが、コードが参照を使って動作する理由を説明するのは常に良いことです。 –

関連する問題