【发布时间】:2020-07-26 18:18:10
【问题描述】:
我创建了一个 VueX 存储文件,如下所示:
// Import packages
import Vue from 'vue';
import Vuex from 'vuex';
import VuexPersistence from 'vuex-persist';
// Import models
import Problem from './models/Problem';
// Create localStorage persistence object
const vuexLocal = new VuexPersistence<RootState>({
storage: window.localStorage,
});
Vue.use(Vuex);
export default new Vuex.Store({
state: {
problems: Array<Problem>(),
},
mutations: {
addProblem(state: any, problem: Problem) {
state.problems.push(problem);
},
setProblems(state: any, problems: Array<Problem>) {
state.problems = problems;
},
},
actions: {
addProblem(context: any, problem: Problem) {
context.commit('addProblem', problem);
},
setProblems(context: any, problems: Array<Problem>) {
context.commit('setProblems', problems);
},
},
plugins: [vuexLocal.plugin],
});
但是当我尝试使用 addProblem 操作时,控制台返回此错误
TypeError: state.problems.push 不是函数
我不明白为什么,因为我已经正确启动了数组(我认为?),当我查找诸如 this 之类的教程时,他们似乎能够使用 push 就好了。
【问题讨论】:
-
将问题状态初始化为一个空数组。像`state:{问题:[],}这样的东西。我想测试一个理论。
-
仍然导致同样的问题@Tony
-
当相关状态(在本例中为
state.problems)未返回数组时,通常会导致此错误。检查 vue devtools 以确认它返回一个数组。 -
啊,你是对的,它确实只是显示了一个数字@Tony :(
标签: typescript vuex