Vue源码中nextTick使用及原理如何解析和改写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1473个文字,预计阅读时间需要6分钟。
在Vue中,`nextTick`的使用确保了DOM更新完成后再执行某些操作,但这并非实时操作。当数据发生变化后,Vue会将渲染watcher添加到异步队列中。异步队列执行完毕,同步代码执行完成后,Vue才会统一更新DOM。下面是相应的代码示例:
1 nextTick的使用
vue中dom的更像并不是实时的,当数据改变后,vue会把渲染watcher添加到异步队列,异步执行,同步代码执行完成后再统一修改dom,我们看下面的代码。
<template> <div class="box">{{msg}}</div> </template> export default { name: 'index', data () { return { msg: 'hello' } }, mounted () { this.msg = 'world' let box = document.getElementsByClassName('box')[0] console.log(box.innerHTML) // hello } }
可以看到,修改数据后并不会立即更新dom ,dom的更新是异步的,无法通过同步代码获取,需要使用nextTick,在下一次事件循环中获取。
本文共计1473个文字,预计阅读时间需要6分钟。
在Vue中,`nextTick`的使用确保了DOM更新完成后再执行某些操作,但这并非实时操作。当数据发生变化后,Vue会将渲染watcher添加到异步队列中。异步队列执行完毕,同步代码执行完成后,Vue才会统一更新DOM。下面是相应的代码示例:
1 nextTick的使用
vue中dom的更像并不是实时的,当数据改变后,vue会把渲染watcher添加到异步队列,异步执行,同步代码执行完成后再统一修改dom,我们看下面的代码。
<template> <div class="box">{{msg}}</div> </template> export default { name: 'index', data () { return { msg: 'hello' } }, mounted () { this.msg = 'world' let box = document.getElementsByClassName('box')[0] console.log(box.innerHTML) // hello } }
可以看到,修改数据后并不会立即更新dom ,dom的更新是异步的,无法通过同步代码获取,需要使用nextTick,在下一次事件循环中获取。

