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