浅谈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 相关文章推荐
通过jquery实现tab标签浏览效果
Feb 20 Javascript
使用javascript创建快捷方式的简单实例
Aug 09 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
JavaScript中的类与实例实现方法
Jan 23 Javascript
jquery中EasyUI实现异步树
Mar 01 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
Angular.js自动化测试之protractor详解
Jul 07 Javascript
angular实现spa单页面应用实例
Jul 10 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
微信小程序实现轮播图指示器
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
用PHP创建PDF中文文档
2006/10/09 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python pygame实现2048游戏
2018/11/20 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
如何对python的字典进行排序
2020/06/19 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
吸烟检讨书2000字
2014/02/13 职场文书
学校联谊活动方案
2014/02/15 职场文书
干部鉴定材料
2014/05/18 职场文书
离婚协议书样本
2015/01/26 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL