终于搞懂了this.$nextTick()的使用场景

this.$nextTick:获取更新之后的DOM

具体来说时获取异步更新之后的DOM,因为如果修改了DOM的显示或者隐藏后立刻要获取DOM元素是获取不到的,因为获取的代码时同步的,DOM的更新时异步的,同步代码执行完后才能执行异步代码,所以同步的获取代码执行的时候DOM还没有更新,异步代码执行完后才算一个渲染循环,最新的DOM元素在下一次渲染循环时才可以获取

而this.$nextTick就是获取下一次渲染循环时的DOM

解决场景:开始为了性能考虑使用v-if设置变量isShow默认为false隐藏一个div元素,然后等待数据获取到再把数据绑定到div中 就是设置isShow为true,注意此时DOM需要从无到有创建,这叫做DOM更新,更新是异步的所以即使获取到数据后改变变量为true也是同步的操作,div盒子不会在本次渲染循环中显示

使用this.$nextTick在回调函数中拿到最新的DOM,也就是下一次更新的DOM(不要过分解读)

注意一点:这个函数是异步的需要等到所有同步代码执行完毕后才会执行里面的回调

实际测试如下:

没有this.$nextTick:

 加了this.$nextTick:

 最后补充DOM更新原理是在微任务完成后更新DOM然后宏任务,具体同步异步可以看一下珠峰的相关视频讲的很细

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值