vuex неизвестного типа действия (или мутации) - PullRequest
0 голосов
/ 21 мая 2019

Я пишу простой код для установки токена в хранилище в приложении Nuxt. когда я пытался вызвать мутацию или действие из своего магазина, эта ошибка регистрировалась в консоли: [vuex] неизвестный тип действия: setToken

import Vuex from 'vuex';

export const store = new Vuex.Store({
    state:()=> ({
        token: ''
    }),
    getters: {
        getToken: state => {
            return state.token;
        }
    },
    mutations: {
        setToken: (tokenStr) => {
            state.token = tokenStr;
        }
    },
    actions: {
        setToken: ({ commit }, tokenStr) => {
            commit('setToken', tokenStr);
        }
    }
})

Это метод, пытающийся вызвать мутацию:

methods:{
  setToken(){
    this.$store.dispatch('setToken','token1');
    this.token = this.$store.getters.token;
  }
}

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вы можете отправлять действия в компонентах с помощью этого. $ Store.dispatch ('xxx') или использовать помощник mapActions, который отображает методы компонента для вызовов store.dispatch (требуется внедрение корневого хранилища): Попробуйте другой способ отправки действия

    import { mapActions } from 'vuex'

export default {
  // ...
  methods: {
...mapActions([
  'increment', 
// map `this.increment()` to 

this.$store.dispatch('increment')

  // `mapActions` also supports payloads:
  'incrementBy' // map `this.incrementBy(amount)` to `this.$store.dispatch('incrementBy', amount)`
]),
...mapActions({
  add: 'increment' // map `this.add()` to `this.$store.dispatch('increment')`
})

} } * +1010 *

0 голосов
/ 21 мая 2019

Вы используете «классический» и теперь устаревший метод установки хранилища vuex в nuxt.Вы должны настроить его так:

// store/index.js
export const state = () => ({
  token: ''
})

export const mutations = {
  SET_TOKEN (state, tokenStr) {
    state.token = tokenStr
}

export const actions = {
  setToken ({ commit }, tokenStr) {
    commit('SET_TOKEN', tokenStr)
  }
}

export const getters = {
  token: (state) => state.token
}

Nuxt создаст для вас магазин оттуда.Вы можете увидеть это в документе здесь .

...