Vue.js обрабатывает данные, которые еще не загружены

Я пытаюсь понять, как лучше всего делать что-то во Vue, и немного застреваю, когда дело доходит до использования данных, которые не были загружены.

Я нахожусь в процессе создания представления «показать» для ресурса, который загружается через vue-apollo, а форма состоит из двух компонентов: компонента формы и компонента редактирования (форма используется совместно с новыми и редактируемыми ).

Моя форма выглядит примерно так

<template lang = "pug">
  form
    input(v-model='model.name')
    input(v-model='model.description')
</template>

<script>
import clone from 'ramda';

export default {
  data() {
    return {
      model: clone(this.value),
    };
  },
};
</script>

И такой компонент "редактирования"

<template lang = "pug">
  resource-form(v-model='resource')
</template>

<script>
import gql from 'graphql-tag';

export default {
  apollo: {
    resource() {
      return gql'{
        resource(id: ${this.$route.params.id}) {
          name
          description
        }
      }';
    }
  }
  data() {
    return {
      model: clone(this.value),
    };
  },
};
</script>

Когда страница загружается, я получаю кучу ошибок о том, что не могу прочитать свойства 'name' и 'description' undefined, что имеет смысл, учитывая, что resource не установлен при начальной загрузке страницы, но каков наилучший способ обработки это?

Должен быть более чистый способ справиться с этим, чем постоянная проверка, является ли model нулевым.

Как насчет упаковки вашего input в span(v-if = "model"), чтобы они не пытались использовать значение, если только model не является неопределенным?

zero298 10.07.2018 18:32

Почему бы не использовать Компонент ApolloQuery? Дело в том, что он встроен в библиотеку, которую вы, кажется, используете. Вы можете использовать ApolloQuery и шаблоны с заданной областью, чтобы отображать дочерние компоненты только тогда, когда у вас действительно есть данные.

Bert 10.07.2018 18:38

откуда берется this.value?

Daniel 10.07.2018 18:39

@ zero298 это единственный вариант, но я надеялся, что есть способ сделать это лучше, но если нет, то я думаю, что это нужно сделать

PaReeOhNos 10.07.2018 19:47

@Bert Выглядит идеально, хотя у меня проблема. Похоже, привязка v-model = "data.resource" не работает, ошибки по-прежнему возникают

PaReeOhNos 10.07.2018 19:47

@Daniel, извините, я не показал в коде, но есть опора value, которая устанавливается с использованием v-модели

PaReeOhNos 10.07.2018 19:47

@Bert был глупым, он работает нормально. Но мне также нужно вывести данные из слота для этого компонента, поэтому в итоге я обернул их в v-if

PaReeOhNos 10.07.2018 19:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
313
0

Другие вопросы по теме