vue父组件异步获取数据子组件不显示

在Vue中,父组件异步获取的数据可能会导致子组件初始化时无法正确显示。解决方法包括:1) 数据获取后延迟渲染,但这可能影响用户体验;2) 子组件监听props变化,但大量操作可能导致多次调用;3) 使用Vuex状态管理,子组件直接调用actions,mapActions在打印数据后执行,而$dispatch先执行接口调用。
摘要由CSDN通过智能技术生成

这个问题遇到很多次,就是父组件中通过接口获取的数据,传给子组件,在子组件打印是空的

原因:接口获取数据需要时间,而在这个数据没有获取到之前,子组件已经渲染完成,自然就拿不到数据了

目前测试的有效的方法:

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:[</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值