[vue] 你知道nextTick的原理吗?

提到DOM的更新是异步执行的,只要数据发生变化,将会开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。简单来说,就是当数据发生变化时,视图不会立即更新,而是等到同一事件循环中所有数据变化完成之后,再统一更新视图。关于异步的解析,可以查看阮一峰老师的这篇文章,具体来说,异步执行的运行机制如下。(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。(4)主线程不断重复上面的第三步。例子://改变数据
vm.message = 'changed'//想要立即使用更新后的DOM。这样不行,因为设置message后DOM还没有更新
console.log(vm.$el.textContent) // 并不会得到'changed'//这样可以,nextTick里面的代码会在DOM更新后执行
Vue.nextTick(function(){console.log(vm.$el.textContent) //可以得到'changed'
})

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

[vue] 你知道nextTick的原理吗?相关推荐

  1. [绍棠] Vue中this.$nextTick()实现原理及使用场景学习总结

    this.$nextTick()原理: Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新. Vue 在修改数据后,视图不会立刻更新,而是等同一事件循环中 ...

  2. 梳理vue双向绑定的实现原理

    Vue 采用数据劫持结合发布者-订阅者模式的方式来实现数据的响应式,通过Object.defineProperty来劫持数据的setter,getter,在数据变动时发布消息给订阅者,订阅者收到消息后 ...

  3. 学习vue的双向数据绑定的原理

    1. vue数据双向绑定的原理. 2. 实现简单版vue的过程,主要实现{{}}.v-model和事件指令的功能. vue数据双向绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式 ...

  4. [vue] 你了解axios的原理吗?有看过它的源码吗?

    [vue] 你了解axios的原理吗?有看过它的源码吗? 1.axios通过对Promise的封装实现异步请求: 2. if(answer == '有'){ if(这个问题到此为止){ return ...

  5. [vue] 你知道v-model的原理吗?说说看

    [vue] 你知道v-model的原理吗?说说看 v-model 為一個語法糖,Vue 會默認使用一個名為 value 的 prop,以及名為 input 的事件. 為了避免不同的 value 有不同 ...

  6. vue的双向数据绑定的原理

    VUE实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的. 代码演示:defineProp ...

  7. vue数据双向绑定的原理

    vue数据双向绑定的原理 一 复习闭包 1 闭包含义: 当函数嵌套时,内部函数使用了外部函数的变量,就会产生闭包 当函数可以记住并访问自己的作用域时,就会产生闭包 2 闭包注意点 ① 队列里的代码执行 ...

  8. Vue数据绑定和响应式原理

    Vue数据绑定和响应式原理 当实例化一个Vue构造函数,会执行 Vue 的 init 方法,在 init 方法中主要执行三部分内容,一是初始化环境变量,而是处理 Vue 组件数据,三是解析挂载组件.以 ...

  9. Vue中的$nextTick有什么作用?

    Vue中的$nextTick有什么作用? 官方定义 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM 什么意思呢? 我们可以理解成,Vue 在更新 D ...

最新文章

  1. strom.yaml配置
  2. 花式方法搞定不同vlan的主机互通
  3. mybatis-plus自定义配置方式
  4. python3中format方法_[翻译]python3中新的字符串格式化方法-----f-string
  5. java web快速入门_Web安全快速入门
  6. java ajax json 乱码_java+ajax加载中文json串后出现乱码问题的解决办法
  7. 满分的项目经理,个人觉得很有道理,所以[转载]
  8. JavaFX 已从 JDK 中独立拆分,早期预览版开放下载
  9. 上传卡正在交付_建行实体卡、虚拟卡一起秒批,不面签不面取,有卡直提8w!...
  10. Linux查看Chrome的版本号
  11. ES Java REST Client 官方文档
  12. 人生苦难重重,如何解决人生的问题?| 读《少有人走的路:心智成熟的旅程》
  13. 基于SSM高校教室管理系统毕业设计-附源码181523
  14. 在命令行使用 Pandoc 进行文件转换
  15. 幽默感也有套路:可用数学模型量化
  16. CENTOS linux kernel 内核编译
  17. Chrome google flash过期
  18. Linux源码编译安装步骤及命令
  19. jQuery赋值checked的几种写法:
  20. MATLAB在动态经济学中的应用,MATLAB在动态经济学中的应用

热门文章

  1. javascript 作用_JavaScript承诺如何从内到外真正发挥作用
  2. aws lambda_四处奔走:初学者遇到AWS Lambda
  3. Go_笔试题记录-不熟悉的
  4. Java基础学习-Path环境变量的配置
  5. linux shell的单行多行注释
  6. .Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关...
  7. 二分查找、变形及应用
  8. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
  9. VMware里装XP 没有找到硬盘驱动器
  10. 行添加DataGridView导出Excel的数据表格