IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue的响应原理 -> 正文阅读

[JavaScript知识库]vue的响应原理

这两天在看红宝书的对象和原型部分,今天又看到了Vue的面试题里的Vue响应原理MVVM。简单记录一下现在的理解,未必完全,仅作为自己逐渐探索MVVM和MVC内在区别的记录。
Object对象有两种属性,一种是数据属性(),一种是访问器属性(getter和setter)。正常我们设置值都是设置数据属性的,而访问器属性是对外不可见的。
在Vue中,当我们把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。
对外来说,我们是看不见传入的对象被增加了getter和setter属性的,但是就是因为getter和setter中的设置代码,在每次setter和getter时都会通知Vue变更。每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

在这里插入图片描述
Vue组件是否更新,是看 watcher 实例是不是接收到通知,而通知 watcher的就是一开始Object.defineProperty()重写的setter方法。此处因为JavaScript的限制,无法追踪到对象的property添加和移除,以及无法追踪到数组length的变化和下标修改数组的值。

**Vue 无法追踪生效的情况**
对象
**Vue 无法检测 property 的添加或移除。
**`var vm = new Vue({
			data:{
					 a:1
					}
				})
	
	// `vm.a` 是响应式的
	vm.b = 2
	// `vm.b` 是非响应式的`
	
	解决办法:使用this.$set(对象|数组,属性|下标,newvalue)
	数组
	
	1、直接通过下标改变数组值,不会触发更新
	例如:items: ['a', 'b', 'c']
	this.item[0] = 'ss' 不会触发更新
	解决办法:使用this.$set(对象|数组,属性|下标,newvalue)
	2、改变数组的length属性
	item.length = 2
	虽然数组被截取了一个元素,发生了改变但也不会触发更新。
	解决办法:
	使用splice(indexOfItem, 1, newValue)
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:55:34  更:2022-03-31 23:59:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:01:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码