Ошибка типа: state.categoriesState.push не является функцией VUEX

#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 тоже помогла.