首页 > 社交 > 科普中国

Vue

常驻编辑 科普中国 2022-10-17 华为   队列   函数   原始   定义   作用   事件   操作   发现   数据

本文分享自华为云社区《Vue 中的 nextTick 有什么作用?》,作者:CoderBin。CNq拜客生活常识网

一、什么是nextTick

先看看官方对其的定义:CNq拜客生活常识网

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。CNq拜客生活常识网

什么意思呢?CNq拜客生活常识网

我们可以理解成,Vue 在更新 DOM 时是异步执行的。当数据发生变化,Vue将开启一个异步更新队列,视图需要等队列中所有数据变化完成之后,再统一进行更新CNq拜客生活常识网

举个例子:CNq拜客生活常识网

Html结构CNq拜客生活常识网

 {{ message }} 

构建一个vue实例CNq拜客生活常识网

const vm = new Vue({
  el: '#app',
  data: {
    message: '原始值'
  }
})

修改messageCNq拜客生活常识网

this.message = '修改后的值1' 
this.message = '修改后的值2' 
this.message = '修改后的值3'

这时候想获取页面最新的DOM节点,却发现获取到的是旧值CNq拜客生活常识网

console.log(vm.$el.textContent) // 原始值

这是因为message数据在发现变化的时候,vue并不会立刻去更新Dom,而是将修改数据的操作放在了一个异步操作队列中CNq拜客生活常识网

如果我们一直修改相同数据,异步操作队列还会进行去重CNq拜客生活常识网

等待同一事件循环中的所有数据变化完成之后,会将队列中的事件拿来进行处理,进行DOM的更新CNq拜客生活常识网

为什么要有nexttickCNq拜客生活常识网

举个例子CNq拜客生活常识网

{{num}} 
for(let i=0; i<100000; i++){ 
  num = i 
}

如果没有 nextTick 更新机制,那么 num 每次更新值都会触发视图更新(上面这段代码也就是会更新10万次视图),有了nextTick机制,只需要更新一次,所以nextTick本质是一种优化策略CNq拜客生活常识网

二、使用场景

如果想要在修改数据后立刻得到更新后的DOM结构,可以使用Vue.nextTick()CNq拜客生活常识网

  • 第一个参数为:回调函数(可以获取最近的

相关阅读:

  • 华为天际通流量卡能插手机吗
  • nova9没有5g版
  • 华为nova9支持鸿蒙吗
  • mix4和mate40选哪个
  • 华为nova10会出吗2021
  • 华为手机字体怎么改(华为手机怎么调整字体样式)
  • 华为怎么开热点(华为手机怎么开热点给别人连)
  • 手机桌面停止运行怎么办(华为桌面崩溃)
  • 华为笔记本电脑怎么样(四五千买华为还是华硕笔记本)
  • 手机进水怎么处理(华为一体机手机进水怎么办)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。