How to evaluate Vue.js component props in the data property?

本秂侑毒 提交于 2019-11-30 16:40:11

问题


I have 2 components: Post and Comments.

Inside Post component, there is Comments component that has 3 props: postId, numCom (number of comments) and comments (array).

I get comments and I pass the array with props, and now I want to retrieve the array in Comments component and add it to data so I can then add/remove comments etc.

Here is my code in Comments.vue:

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

But this doesn't works. In Vue developer tools I can see that comments prop is filled with comments, but allComments array is empty.

What should I do?


回答1:


It looks like the comments prop does not have a value at the time of the component's creation (which is the only time allComments will be set).

You can either:

  1. Defer the creation of the component until the comments prop is ready by using v-if like this:
<comments v-if="comments" :comments="comments"></comments>
  1. Watch for changes to the comments prop and set allComments to the new value (in addition to initializing allComments in the data function):
watch: {
  comments(value) {
    this.allComments = value;
  }
}


来源:https://stackoverflow.com/questions/45022705/how-to-evaluate-vue-js-component-props-in-the-data-property

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!