Вю.js передача реквизитов в данные


У меня есть 2 составляющие: Post и Comments.

Внутри компонента Post есть компонент Comments, который имеет 3 реквизита: postId, numCom (количество комментариев) и comments (массив).

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

Вот мой код в Comments.vue:

props: ['id', 'numCom', 'comments'],
data: function() {
  return {
     newMessage: "",
     loading: false,
     allComments: this.comments,
     num: this.numCom,
   }
},

Но это не работает. В инструментах разработчика Vue я вижу, что comments prop заполнен с комментариями, но массив allComments пуст.

Что мне делать?

1 11

1 ответ:

Похоже, что comments prop не имеет значения в момент создания компонента (который является единственным временем, когда будет установлен allComments).

Вы можете либо:

  1. отложите создание компонента до тех пор, пока опора comments не будет готова, используя v-if Вот так:
<comments v-if="comments" :comments="comments"></comments>
  1. следите за изменениями в comments prop и установите allComments новое значение (в дополнение к инициализации allComments в функции данных):
watch: {
  comments(value) {
    this.allComments = value;
  }
}