2016-12-28 24 views
6

Tôi muốn truy cập state.session trong instance.js từ records_view.js. Làm thế nào điều này được thực hiện?Vuex: Trạng thái truy cập từ một mô-đun khác

cửa hàng/modules/instance.js

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

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

cửa hàng/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 
    ); 
    } 
}; 

này là cho một chút bối cảnh gia tăng.

cửa hàng/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 
    } 
}); 

Trả lời

15

state tham khảo trạng thái cục bộ và rootState nên được sử dụng khi truy cập trạng thái của các mô-đun khác.

let session = context.rootState.instance.session; 

Tài liệu: https://vuex.vuejs.org/en/modules.html

0

Bạn cần phải xác định session trong tiểu bang của bạn như sau, để truy cập nó trong getters của bạn:

const state = { 
    session: '' 
} 

Bạn phải viết một mutation, sẽ được gọi từ các hành động của bạn để đặt giá trị trạng thái này.

+0

Tôi có tất cả những gì bạn đã đề cập ở đây. Tôi có thể truy cập phiên từ bên trong một thành phần, nhưng tôi không chắc chắn cách truy cập phiên từ bên trong một mô-đun Vuex khác (tức là records_view.js). – Donnie

+1

@Donnie cố gắng 'context.rootState.instance.session' – Saurabh

2

từ một hành động:

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

    }, 
+0

Mặc dù điều này có thể trả lời câu hỏi, nhưng luôn luôn là điều tốt để cung cấp giải thích tại sao mã hoạt động với tham chiếu. –

Các vấn đề liên quan