首页 > 解决方案 > vuex 未知动作(或突变)类型

问题描述

我正在编写一个简单的代码来在 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;
  }
}

标签: vuexstorenuxt.js

解决方案


您正在使用“经典”且现已弃用的方法在 nuxt 中设置 vuex 存储。你应该这样设置:

// 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 将从那里为您建立商店。您可以在此处的文档中看到它。


推荐阅读