Open jizai1125 opened 1 year ago
8.4 class 的处理
5.8.3 避免污染原始数据 文字错误,这里应该是存在
10.1 双端 比较的原理 这里应该是大于
5.4 合理的触发响应 不知道理解的对不对? 看源码时多了一种数组场景下的判断:不影响数组长度变化但是会触发副作用函数重新执行
const observed = reactive(new Array(3))
effect(() => {
console.log(observed.length)
})
// 下面用例不会影响数组长度变化,不应该触发副作用函数重新执行
observed.x = 'x' // 非索引属性
observed[-1] = 'x' // 负索引
observed[1] = 1 // 已存在索引
function createSetter(shallow = false) {
return function set(
target: object,
key: string | symbol,
value: unknown,
receiver: object
): boolean {
let oldValue = (target as any)[key]
// 省略代码...
const hadKey =
// 新增判断
isArray(target) && isIntegerKey(key)
? Number(key) < target.length
: hasOwn(target, key)
const result = Reflect.set(target, key, value, receiver)
// don't trigger if target is something up in the prototype chain of original
if (target === toRaw(receiver)) {
if (!hadKey) {
trigger(target, TriggerOpTypes.ADD, key, value)
} else if (hasChanged(value, oldValue)) {
trigger(target, TriggerOpTypes.SET, key, value, oldValue)
}
}
return result
}
}
14.4 总结 文字错误,选项才对
17.2.1 带有 v-if 指令的节点 这里 key 不应该被包在对象里面吧
7.3 自定义渲染器 这里应该是 text