code-for-vue-3-book
code-for-vue-3-book copied to clipboard
第四章响应式的部分图的画法不一致
P50 图 4-4 中,WeakMap 的 key 是变量名称
P71 图 4-10 中,WeakMap 的 key 是 computed,如果按照上述的画图规则,WeakMap 的 key 应该也是变量名称 obj
这个我认为是没有问题的。 原文中的案例如下:
const sumRes = computed(() => obj.foo + obj.bar)
effect(function effectFn(){
console.log(sumRes.value)
})
obj++
如图4-10, 图中的value ,对应的是 sumRes.value
, 表示computed的返回值 sumRes.value
收集了 effectFn
,当 sumRes.value
改变时 effectFn 重新执行
这个我认为是没有问题的。 原文中的案例如下:
const sumRes = computed(() => obj.foo + obj.bar) effect(function effectFn(){ console.log(sumRes.value) }) obj++
如图4-10, 图中的value ,对应的是
sumRes.value
, 表示computed的返回值sumRes.value
收集了effectFn
,当sumRes.value
改变时 effectFn 重新执行
你说的逻辑是对的。但我们好像在说的是不同的事情。 我的问题是,图的画法,并没有遵循一个统一的标准。 为什么说没有遵循同一个标准。 看图 4-4,图的前面紧接着的是这段关系描述:
data
- ok
- effectFn
- text
- effectFn
图 4-4 是跟这段关系紧密相关的,是在描述对象 data 的 ok 属性,有依赖 effectFn
而图 4-10的关系为:
computed(obj)
- value
- effectFn
同样的图 4-10 也是在描述这段关系,但是这里没有使用变量名 obj,而是用了 computed
按照图 4-4 的规则来看的话,这就会变成对象 computed 的 value 属性,有依赖 effectFn
其实这里更应该是对象 obj 的 value 属性,有依赖 effectFn
或者对象 computed(obj) 的 value 属性,有依赖 effectFn
个人认为应该这样改,画图才是遵循一个统一的标准
这个我认为是没有问题的。 原文中的案例如下:
const sumRes = computed(() => obj.foo + obj.bar) effect(function effectFn(){ console.log(sumRes.value) }) obj++
如图4-10, 图中的value ,对应的是
sumRes.value
, 表示computed的返回值sumRes.value
收集了effectFn
,当sumRes.value
改变时 effectFn 重新执行你说的逻辑是对的。但我们好像在说的是不同的事情。 我的问题是,图的画法,并没有遵循一个统一的标准。 为什么说没有遵循同一个标准。 看图 4-4,图的前面紧接着的是这段关系描述:
data - ok - effectFn - text - effectFn
图 4-4 是跟这段关系紧密相关的,是在描述对象 data 的 ok 属性,有依赖 effectFn
而图 4-10的关系为:
computed(obj) - value - effectFn
同样的图 4-10 也是在描述这段关系,但是这里没有使用变量名 obj,而是用了 computed 按照图 4-4 的规则来看的话,这就会变成对象 computed 的 value 属性,有依赖 effectFn 其实这里更应该是对象 obj 的 value 属性,有依赖 effectFn 或者对象 computed(obj) 的 value 属性,有依赖 effectFn
个人认为应该这样改,画图才是遵循一个统一的标准
你说的有道理。这里的computed确实是表示computed的返回值obj
@candy-Tong 感谢。
将 computed
改为 obj
,如下图: