Vue组件传值异步问题--子组件拿到数据较慢

简介: Vue组件传值异步问题--子组件拿到数据较慢

问题出现
之前写静态页面的时候,直接父向子传值,是指节能渲染出父组件给子组件的值,但是加上请求后,就会出现请求过慢。就是在组件创建和渲染完毕时,子组件的值才拿到,子组件并没有实时更新模版(灾难始终慢我一步)

产生原因
子组件中的 created 、mounted 只执行一次,在富组件初始化时,已经给子组件传了一个空值,导致异步请求数据发生变化时,子组件的值不再变化
在父组件中,获取数据时会有几秒钟的时间延迟,而异步请求不会阻塞后续代码,所以导致子组件通过props接受数据时拿到的是空数据,通过打印结果显示先执行子组件中props中的代码,导致数据无法渲染。

解决办法
就是没有发请求拿到数据之前,不让他创建子组件并传值,因此给其加 v-if 指令来限制他是否能创建子组件,类似于节流的思想。
在父组件中的子组件,通过v-if判断接口请求的数据是否不为0或者不为空,因为v-if是通过创建DOM显示的,此时通过判断如果子组件有数据的话才传数据

data 数据里面

list : false || null

请求方法里

async getUserinfo() {
   
  const {
    data : res } = await getUserinfo(userid:this.userid)
  this.list = res.data
}

模版子组件处

<Userinfo :list = 'list' v-if = 'list'/>
<Userinfo :list = 'list' v-if = 'list && list.length > 0'/>
目录
相关文章
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
12 4
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
12 4
|
3天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
8 2
|
JavaScript
Vue的非父子组件之间传值
全局事件总线 一种组件间通信的方式,适用于任意组件间通信
|
缓存 JavaScript 前端开发
Vue Props、Slot、v-once、非父子组件间的传值....
Vue Props、Slot、v-once、非父子组件间的传值....
74 0
|
JavaScript
Vue中父子组件传值
先在⽗组件中给⼦组件的⾃定义属性绑定⼀个⽗组件的变量
|
JavaScript
vue 组件传值
vue 组件传值
74 0
|
JavaScript
vue父子组件传值
vue父子组件传值
|
JavaScript
vue兄弟组件传值 方便快捷
vue兄弟组件传值 方便快捷
|
JavaScript
Vue父子组件传值(porvide+inject实现组件通信)
如果我们需要把父组件的值传递给子组件,而且子组件可能存在层层嵌套,那么就可以使用provide+inject的方法来实现组件之间的通信
185 0
Vue父子组件传值(porvide+inject实现组件通信)
下一篇
无影云桌面