浅谈vue单一组件下动态修改数据时的全部重渲染


Posted in Javascript onMarch 01, 2018

今天在学习vue的过程中,发现一个有趣的现象。

在某一组件下的某一数据通过点击事件被动态修改的时候,对应view中的数据同步的进行了修改,没错,这不是废话吗,vue的一大特色就是数据的双向绑定。可有趣的是,该组件下我写的另一个用Math.random()的data值对应的值和视图也发生了变化

这就让我这个刚入门的小白有点奇怪了,我修改一个,怎么变了两个????脑洞放开一想,会不会数据在双向同步的时候,发生了什么,比如。是不是只要有一个节点变了,node都重新进行了加载???

我想这其中的缘由必定和vue数据的双向绑定的原理有关联,就搜索了一番,果然发现了些东西,就是DocumentFragment,之前好像见过,但没怎么重视。那么它是用来干啥的呢:

DocumentFragment(文档片段)可以看作节点容器,它可以包含多个子节点,当我们将它插入到 DOM 中时,只有它的子节点会插入目标节点,所以把它看作一组节点的容器。使用 DocumentFragment 处理节点,速度和性能远远优于直接操作 DOM。

手动划重点:Vue 进行编译时,就是将挂载目标的所有子节点劫持(真的是劫持,通过 append 方法,DOM 中的节点会被自动删除)到 DocumentFragment 中,经过一番处理后,再将 DocumentFragment 整体返回插入挂载目标。

以上这篇浅谈vue单一组件下动态修改数据时的全部重渲染就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
微信小程序实现滚动消息通知
Feb 02 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
JS实现电商商品展示放大镜特效
Jan 07 Javascript
Vue实现简单的拖拽效果
Aug 25 Javascript
ES6 解构赋值的原理及运用
May 25 Javascript
JavaScript架构搭建前端监控如何采集异常数据
Jun 25 Javascript
vue 虚拟dom的patch源码分析
Mar 01 #Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
Mar 01 #Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
Mar 01 #Javascript
React Native 图片查看组件的方法
Mar 01 #Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 #Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
Mar 01 #Javascript
vue中使用cropperjs的方法
Mar 01 #Javascript
You might like
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
python 字符串和整数的转换方法
2018/06/25 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
高一新生军训感言
2014/03/02 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
班组长安全工作职责
2014/07/15 职场文书
小学元宵节活动总结
2015/02/06 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android