问题
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:
- Defer the creation of the component until the
commentsprop is ready by usingv-iflike this:
<comments v-if="comments" :comments="comments"></comments>
- Watch for changes to the
commentsprop and setallCommentsto the new value (in addition to initializingallCommentsin 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