我有两个Vue组件,EventTask
和EventCard
。 EventTask
在currentEvent
中有一个data
对象,我将其作为道具传递给EventCard
,就像这样
<event-card :current-event="currentEvent" />
在EventCard中,我根据this answer的建议从event
道具初始化了currentEvent
数据属性。
export default {
name: 'EventCard',
props: {
currentEvent: {
type: Object,
required: false
}
},
data: function () {
return {
event: { ...this.currentEvent }
}
}
}
但是,由于某些原因,event
数据属性未正确设置。这就是我在Vue开发人员工具中看到的内容
请注意,currentEvent
属性是一个对象,具有一系列属性,但是event
数据属性是一个空对象。为什么无法从prop中正确初始化数据属性?
答案 0 :(得分:2)
如果currentEvent
在初始化后{em> {em> 之后更新,则可能发生这种情况。请注意,EventCard
不会被被动调用,因此对data()
的更改不会重新初始化currentEvent
。
一种解决方案是在event
上使用watcher将其复制到currentEvent
:
event
答案 1 :(得分:0)
您可以尝试以下代码
export default {
name: 'EventCard',
props: {
currentEvent: {
type: Object,
required: false
}
},
data: function () {
return {
event: null
}
},
mounted () {
this.event = this.currentEvent // you can also try clone here.
}
}
答案 2 :(得分:0)
尝试这样操作:
export default {
name: 'EventCard',
props: {
currentEvent: {
type: Object,
required: false
}
},
data: function () {
return {
event: this.currentEvent
}
}
}
来源:https://vuejs.org/v2/guide/components-props.html#One-Way-Data-Flow