Vue.js 使用 nextTick 处理 DOM 更新后的逻辑

风枫姑娘_2441

风枫姑娘_2441

2026-07-18

319人浏览

原创

nexttick 用于在 vue 数据更新后 dom 完成渲染时执行操作;因 vue 异步批量更新 dom,直接读取可能获取旧状态,nexttick 确保回调在本次更新周期结束后执行,支持回调函数和 async/await 两种用法。

vue.js 使用 nexttick 处理 dom 更新后的逻辑

Vue 在数据变化后不会立即更新 DOM,而是异步批量更新。如果你需要在 DOM 更新完成后执行某些操作(比如获取元素尺寸、聚焦输入框、滚动到某位置),nextTick 就是专门为此设计的 API。

为什么必须用 nextTick?

Vue 的响应式更新是异步的:当你修改响应式数据,视图不会立刻重绘,而是被推入一个微任务队列,等当前同步代码执行完再统一处理。如果直接在赋值后读取 DOM,拿到的仍是旧状态。

  • 例如:this.show = true; console.log(this.$refs.box.offsetHeight) —— 此时 box 可能还没渲染出来,高度为 0
  • nextTick 确保回调在本次 DOM 更新周期完成之后执行,此时节点已真实挂载或更新完毕

基本用法:回调函数形式

传入一个函数,它会在 DOM 更新后被调用:

this.message = 'Hello';
this.$nextTick(() => {
  // 这里可以安全操作更新后的 DOM
  this.$refs.input.focus();
});

注意:该方法在 Vue 2 和 Vue 3 的 Options API 中写法一致;Composition API 中需从 vue 显式导入:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习