Проблема доступа к мутациям vuex из магазина store / index.js - PullRequest
0 голосов
/ 18 декабря 2018

Смиренно, я признаю, что получаю от SAVuegram настройки аутентификации для моего приложения.Я использую Firebase onAuthStateChanged, чтобы убедиться, что пользователь остается во время обновления страницы, однако я совершенно не могу получить доступ к состоянию внутри функции, получая следующую ошибку:

Error gaining access to store ($ store только от меня делает снимок экрана при тестировании "$ store", а также "store" - оба ломаются.)

С включенной строгой отладкой ятакже получать сообщения, предупреждающие меня о мутировании вне обработчиков мутаций, но разве я этим не занимаюсь?enter image description here

Вот мой магазин / index.js

import Vue from 'vue'
import Vuex from 'vuex'
import fb from '../components/firebase/firebaseInit'
import createLogger from 'vuex/dist/logger'

// import dataRefs from './dataRefs'
// import pageTitle from './modules/pageTitle'
import auth from './modules/auth'
import apps from './modules/applicants'

Vue.use(Vuex)

fb.auth.onAuthStateChanged(user => {
    if (user) {
      // here I can access the user object but never the following "store"
      console.log("FB AUTH", user);
      store.commit('setCurrentUser', user)
      store.dispatch('fetchUserProfile')
    }
});

const debug = process.env.NODE_ENV !== 'production'

const createStore = () => {
  return new Vuex.Store({

    state: {
        pageTitle: '',
        currentUser: null,
        userProfile: null
      },

    mutations: {

      changePageTitle(state, newTitle) {
        state.pageTitle = newTitle
      },

      changeSnackBarMessage(state, newMessage) {
        state.snackBarMessage = newMessage
      },

      // POPUPS
      changeAdvisorAddAppPopupStatus(state) {
        state.showAdvisorAddPopup = !state.showAdvisorAddPopup
      },

      setToken(state, token) {
        state.token = token;
      },

      setUser(state, userObj) {
        state.user.email = userObj.email;
        state.user.fbUUID = userObj.uuid;
      }
    },

  actions: {
      updatePageTitle(vuexContext, newTitle) {
        vuexContext.commit('changePageTitle', newTitle);
      },
      updateSnackBarMessage(vuexContext, newMessage) {
        vuexContext.commit('changeSnackBarMessage', newMessage);
      },
      toggleAdvisorAddPopup(vuexContext) {
        vuexContext.changeAdvisorAddAppPopupStatus
      },
  },

    modules: {
    auth,
    apps
    },
    strict: debug,
    plugins: debug ? [createLogger()] : []
  })
};
export default createStore;

К вашему сведению, я также пытался создать экземпляр своего магазина с помощью export const store = new Vuex.Store({ вместо const create ... метода, но затем Vuex показывает мне, что ни одно из моих состояний, действий, получателей или мутаций даже не найдено.

enter image description here

Спасибо за помощь.

1 Ответ

0 голосов
/ 18 декабря 2018

Почему вы создаете магазин в функции?

const createStore = () => {

Я просто делаю это так:

const store = new Vuex.Store({
    state: {},

    mutations: {},

    actions: {},

    modules: {
       auth,
       apps
    },
    strict: debug,
    plugins: debug ? [createLogger()] : []
  })
};

export default store;

И теперь я могу получить доступ к магазину.

...