浅谈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 相关文章推荐
深入学习JavaScript中的原型prototype
Aug 13 Javascript
学习JavaScript设计模式之观察者模式
Apr 22 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
JS实现直接运行html代码的方法
Mar 13 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
Jan 07 Javascript
vue-cli3 热更新配置操作
Sep 18 Javascript
javascript实现简单页面倒计时
Mar 02 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
PHP文件下载类
2006/12/06 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
使用jQuery实现动态添加小广告
2017/07/11 jQuery
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
python 获取网页编码方式实现代码
2017/03/11 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
介绍信格式样本
2015/05/05 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js
Mysql 一主多从的部署
2022/05/20 MySQL