摘要:
1.创建key<=>index的map映射 在 vue 的 diff 函数交叉对比中,当新节点跟旧节点头尾交叉对比没有结果时,会根据新节点的 key 去对比旧节点数组中的 key,从而找到相应旧节点(这里对应的是一个 key => index 的 map 映射)。如果没有找到就认为是一个新增节点。而 阅读全文
摘要:
当用户指定了watch中的deep属性为true时,如果当时监控的属性是数组类型,会对对象中的每一项进行求值,此时会将当前watcher存入到对应属性的依赖中,这样数组中对象发生变化时也会通知数据更新。内部原理就是递归,耗费性能 。 整体流程: initWatch 初期化user watcher(1 阅读全文
摘要:
默认computed也是一个watcher,具备缓存,只有当依赖的属性发生变化才会更新视图。 原理图: 流程:computed watcher在defineReactive的get中订阅属性的变化(4),在defineReactive的set时触发notify(4),notify调用每个订阅了改属性 阅读全文