@ezpy

Как правильно работать с модулями vuex?

Не могу понять, как правильно работать с модулями.
Читал документацию, но все равно не могу понять.
Например, вот код хранилища:

import Vue from 'vue'
import Vuex from 'vuex'
import VueAxios from 'vue-axios'
import VueResource from 'vue-resource'

Vue.use(VueResource)
Vue.use(Vuex)

const Profile = {
  state: { 
    login: '',
  },
  mutations: {
        SetLogin(state, dataJsonFromProfile) {
           state.login = dataJsonFromProfile.Login
        } 
    },
  actions: {
       checksession(context) {
            Vue.http.get('mydomain.ru/api/checksession').then(response => {

                if (response.data == 'true') {
                    Vue.http.get('mydomain.ru/api/getuserinfo').then(response => {

                        var getUserInfoJson = JSON.parse(JSON.stringify(response));

                        var makeParseJson = JSON.parse(getUserInfoJson.bodyText);
                        
                        context.commit('SetLogin',  makeParseJson)
                    }, response => {
                        // error callback
                    });
                }

            }, response => {
                // error callback
            });
        } 
    }
}

export const store = new Vuex.Store({
    strict: process.env.NODE_ENV !== 'production',
    state: {
        online: 2,
        ws: null,
    },

    actions: {
        setWs({commit}, query) {
            this.ws = new WebSocket(query)
            this.ws.onopen = function () {
                console.log('connect ws')
            }
        },
    }
})

До того как начал разделять на модули все отлично работало.
Теперь я хочу с App.vue получить данные state с модуля Profile

created: function () {
      this.$store.dispatch('checksession');
    },

    computed: {
        login () {
            return this.$store.state.login;
        }
    },

Actions через dispatch вызывается и проходи проверка, но вот как получить состояние понять не могу.
  • Вопрос задан
  • 1296 просмотров
Решения вопроса 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Вам нужно экземпляр модуля связать c vuex:
const store = new Vuex.Store({
  modules: {
   profile: Profile
  }
})

и далее state можно получить обратившись так:
this.$store.state.profile.login
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы