#javascript #vuejs2 #vuex
#javascript #vuejs2 #vuex
Вопрос:
У меня эта ошибка, но я не понимаю причины, не могли бы вы подсказать мне?
Ошибка:
Ошибка типа: состояние.categoriesState.push не является функцией
Мой код:
state.js
export default {
categoriesState: []
}
mutations.js
export function setCategories(state, category){
state.categoriesState.push(category);
};
Вызов **VUEX из моего компонента:**
methods: {
...mapMutations('cat', ['setCategories']),
addCategoriesToVuex(category){
this.setCategories(category);
},
}
Ответ №1:
Скорее всего, ваша переменная categoriesState является объектом, а не массивом. Вы должны сначала проверить это, выполнив консоль typeOf вашей переменной categoriesState.
export function setCategories(state, category){
console.log(typeOf(state.categoriesState));
//state.categoriesState.push(category);
};
Вы можете использовать метод set для добавления нового свойства к объекту в vue.
Комментарии:
1. Это массив, но я не знаю, почему он рассматривался как объект, я просто изменил имя на это состояние vuex, и это сработало. Спасибо.
2. Я тоже сделал то же самое, что и вы, и это сработало @OscarDev
Ответ №2:
У меня была та же проблема, это было из-за пакета vuex-persistedstate. Как упоминал @OscarDev, помогло изменение имени переменной. Это потому, что persistedstate сохранил тип переменной, когда вы писали код. Так что очистка кэша persistedstate тоже помогла.