vue父组件异步请求成功后传值给子组件,子组件如何监听到

父组件
<infcom :infdata="infDW"></infcom>

computed: {
infDW() {

 return this.infData

}
}

methods: {
getIData() {

接口请求  1分钟返回成功
if(res.code == '200'){
   this.infData = res.data
   console.log(this.infData)
}

}
}
mounted() {
this.getIDate()
}

子组件
watch: {
infdata(){

 console.log(this.indata)

}
// 或者
infdata:{

 deep:true,
 handler(n,o) {
  console.log(n.0)
 }
 console.log(this.indata)

}
}

父组件接口请求成功可以打印出数据
子组件的watch就没有执行
请问一下有哪里写错了吗?

阅读 3.4k
3 个回答

首先,props可以做成动态的。
想要做边际影响,可以设置props的watch来获知变动。

你的infData 应该是个对象吧
props:{
infoData:{
type:Object,
default:function(){

  return {}

}
}
},
watch: {
infoData:{
handler(n,o){

console.log(n)
},deep:true}
}
第2种方法:自定义事件
let bus=new Vue({})
在父组件的getData方法请求成功后
bus.$emit('eventName',data)
子组件里监听该事件
crated(){
bus.$on('eventName',data=>{console.log(data)})
}

父组件data中定义infData: [],
子组件使用深度监听
watch: {
infdata: {

handle() {},
deep: true,

},
},

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题