浅谈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弹出层代码
Sep 24 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
Jun 16 Javascript
js传值后台中文出现乱码的解决方法
Jun 30 Javascript
js实现简易垂直滚动条
Feb 22 Javascript
微信小程序canvas写字板效果及实例
Jun 15 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 Javascript
js中如何完美的解析数据
Mar 18 Javascript
node实现基于token的身份验证
Apr 09 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
小程序登录/注册页面设计的实现代码
May 24 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
空指针到底是什么
2012/08/07 面试题
鲜果饮品店创业计划书
2014/01/21 职场文书
个人授权委托书模板
2014/09/14 职场文书
导游词之山东八大关
2019/12/18 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis