Возможна ли работа вычисляемых свойств при получении данных для них из vuex?

Доброго времени суток.
Есть примерно такой код:
computed: {
    myData() {
      let data = [] || this.$store.getters.getMyData();
      return data;
    },
    isValid(){
        return this.myData.list.some( el => el.id === this.id )
    }
  },

Но выдается ошибка "Error in render: "TypeError: Cannot read property 'some' of undefined" ". Я понимаю так, что vuex не успевает отработать до вычисления свойства isValid. В связи с этим вопрос, такой подход вообще реально реализовать? Или проще нужные свойства вынести в data и изменять их в myData, после выполнения геттера?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
victory_vas
@victory_vas
Как вариант:
isValid(){
  let data = [];
  if(this.myData && this.myData.list) data = this.myData.list.some( el => el.id === this.id );
  return data
}

Пока данные не пришли с сервера, свойство будет отдавать пустоту.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
Выражение [] || this.$store.getters.getMyData() всегда будет иметь своим значением пустой массив. Это первое. Второе - а что, ваш геттер действительно возвращает функцию? Или вы полагаете, будто его надо вызывать? Третье - если по вашей задумке значением myData может быть пустой массив, то почему вы работаете с myData как с объектом? Или, почему вы, зная, что нужен объект с определёнными свойствами, в качестве заглушки используете массив?

Я бы предположил, что реально вы имели в виду следующее:

myData() {
  return this.$store.getters.getMyData || { list: [] };
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы