Vue · 单选题 · 第 52 题
前端与全栈开发面试 · 第 52 题
修改数据后立即读取 DOM,拿到的仍是旧内容。nextTick 能解决这个问题的原因是?
- AnextTick 会强制同步刷新整个应用,使得数据修改立即同步到 DOM 上
- BnextTick 的回调会延迟到浏览器的下一帧动画时才执行,等待页面绘制
- CnextTick 的回调会等到用户下一次触发交互事件时才执行,避免重复渲染
- DDOM 更新是异步批量进行的,nextTick 的回调会在这次更新完成后执行
答案
D D. DOM 更新是异步批量进行的,nextTick 的回调会在这次更新完成后执行
解析
Vue 把同一轮里的多次数据修改放进队列去重,在微任务中统一更新 DOM,避免重复渲染。nextTick 把回调排在这次刷新之后,所以能读到更新后的 DOM。Vue 3 里 nextTick 返回 Promise,可以直接 await nextTick()。