code-for-vue-3-book icon indicating copy to clipboard operation
code-for-vue-3-book copied to clipboard

第四章响应式的部分图的画法不一致

Open candy-Tong opened this issue 2 years ago • 4 comments

P50 图 4-4 中,WeakMap 的 key 是变量名称 image

P71 图 4-10 中,WeakMap 的 key 是 computed,如果按照上述的画图规则,WeakMap 的 key 应该也是变量名称 obj image

candy-Tong avatar Mar 15 '22 14:03 candy-Tong

这个我认为是没有问题的。 原文中的案例如下:

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 重新执行

clyan avatar Mar 23 '22 07:03 clyan

这个我认为是没有问题的。 原文中的案例如下:

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

image 图 4-4 是跟这段关系紧密相关的,是在描述对象 data 的 ok 属性,有依赖 effectFn

而图 4-10的关系为:

computed(obj)
  - value
    - effectFn

image 同样的图 4-10 也是在描述这段关系,但是这里没有使用变量名 obj,而是用了 computed 按照图 4-4 的规则来看的话,这就会变成对象 computed 的 value 属性,有依赖 effectFn 其实这里更应该是对象 obj 的 value 属性,有依赖 effectFn 或者对象 computed(obj) 的 value 属性,有依赖 effectFn

个人认为应该这样改,画图才是遵循一个统一的标准 image

candy-Tong avatar Mar 23 '22 15:03 candy-Tong

这个我认为是没有问题的。 原文中的案例如下:

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

image 图 4-4 是跟这段关系紧密相关的,是在描述对象 data 的 ok 属性,有依赖 effectFn

而图 4-10的关系为:

computed(obj)
  - value
    - effectFn

image 同样的图 4-10 也是在描述这段关系,但是这里没有使用变量名 obj,而是用了 computed 按照图 4-4 的规则来看的话,这就会变成对象 computed 的 value 属性,有依赖 effectFn 其实这里更应该是对象 obj 的 value 属性,有依赖 effectFn 或者对象 computed(obj) 的 value 属性,有依赖 effectFn

个人认为应该这样改,画图才是遵循一个统一的标准 image

你说的有道理。这里的computed确实是表示computed的返回值obj

clyan avatar Mar 23 '22 15:03 clyan

@candy-Tong 感谢。 将 computed 改为 obj,如下图:

image

HcySunYang avatar Apr 01 '22 14:04 HcySunYang