这个问题遇到很多次,就是父组件中通过接口获取的数据,传给子组件,在子组件打印是空的
原因:接口获取数据需要时间,而在这个数据没有获取到之前,子组件已经渲染完成,自然就拿不到数据了
目前测试的有效的方法:
1.当这个数据获取到的时候,再进行渲染,
局限: 如果是弹框获取的话,就会产生一秒之后弹框才会出来的现象,影响界面效果
//子组件
<claimPerson
ref='person'
v-if='JSON.stringify(list) !== "{}"'
:parentMessage='list'
/>
//在子组件中 watch 监听,父组件获取到值,这个值就会变化,自然是可以监听到的
watch:{
parentMessage:{
deep:true,
handler:function(newVal,oldVal) {
this.$nextTick(() => {
this.parentMessage = newVal
})
}
}
}
2.在子组件对传入的数据进行监听(有关组件注册等就不在写了)
弊端:
这种方法的局限在于只能在监听函数里面对传入的值进行操作,如果数据操作量大,可能也会导致多次调用
子组件
data:{
newList:[</