Невозможно использовать метод store.subscribe () в Vuex - PullRequest
0 голосов
/ 12 октября 2018

Я просто пытаюсь использовать метод store.subscribe() в Vuex.Я продолжаю получать следующую ошибку, которая, по-видимому, предполагает отсутствие метода store.subscribe, в отличие от документа:

Uncaught TypeError: WEBPACK_IMPORTED_MODULE_2__store .a.state.subscribe не является функцией

это мой код:

app.js файл, где я инициализирую все, регистрирую свои компоненты и т. д .:

import Vuex from 'vuex';
import router from './routes';
import store from './store';

window.Vue = require('vue');

const app = new Vue({
    el: '#app',
    router,
    store: new Vuex.Store(store)
});
store.subscribe((mutation, state) => {
  console.log(mutation.type)
  console.log(mutation.payload)
})

мой store.js файл, который служит моим централизованным Vuex хранилищем.До сих пор он работал отлично:

import router from './routes';
export default {
    state: {
      sample: {
        
      }
    },  
    mutations: {
      sample(state){
        
      }
        
    },

    getters: {
      sample(state){
        return state.sample
      }
    }
  
}

как мне исправить эту проблему

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Добавьте app объект типа app.store..., потому что ваш store не известен как экземпляр хранилища Vuex на этом уровне.

    import Vuex from 'vuex';
    import router from './routes';
    import store from './store';

     window.Vue = require('vue');

     const app = new Vue({
         el: '#app',
         router,
         store: new Vuex.Store(store)
       });
     app.$store.subscribe((mutation, state) => {
        console.log(mutation.type)
        console.log(mutation.payload)
       })
0 голосов
/ 12 октября 2018

Я думаю, это происходит потому, что store все еще является обычным объектом, а не экземпляром Vuex, когда вы его вызываете.Можете ли вы попробовать следующее:

import Vuex from 'vuex';
import router from './routes';
import store from './store';

window.Vue = require('vue');
const myStore = new Vuex.Store(store)
const app = new Vue({
    el: '#app',
    router,
    store: myStore
});
myStore.subscribe((mutation, state) => {
  console.log(mutation.type)
  console.log(mutation.payload)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...