为什么 mobx computed getter 在更改值后不调用
Why mobx computed getter doesn't call after change value
我有 TestStore
和可观察的 属性 fields
.
当我点击任何名称时,我会调用操作 changeOneName
并更改 fields
中的一些对象。计算 getter hasError
再次调用,我看到 console.log("hasError computed");
为什么在将名称更改为 'ErrorName'
后我第二次看不到 console.log("valueFields computed");
?
https://codesandbox.io/s/vibrant-lumiere-cv2tp?file=/src/TestStore.js
您只更改了对象的 name
属性,而不是对象本身。 Object.values
只解引用你的 fields
对象的直接值(对象),而不是内部的东西,比如 name
。所以 computed
不需要重新运行,因为 computed
中引用的内容没有改变。
hasError
确实重新运行,因为您实际上在其中取消引用 name
属性,因此当 name
更改时它会重新运行。
希望它有意义。
我有 TestStore
和可观察的 属性 fields
.
当我点击任何名称时,我会调用操作 changeOneName
并更改 fields
中的一些对象。计算 getter hasError
再次调用,我看到 console.log("hasError computed");
为什么在将名称更改为 'ErrorName'
后我第二次看不到 console.log("valueFields computed");
?
https://codesandbox.io/s/vibrant-lumiere-cv2tp?file=/src/TestStore.js
您只更改了对象的 name
属性,而不是对象本身。 Object.values
只解引用你的 fields
对象的直接值(对象),而不是内部的东西,比如 name
。所以 computed
不需要重新运行,因为 computed
中引用的内容没有改变。
hasError
确实重新运行,因为您实际上在其中取消引用 name
属性,因此当 name
更改时它会重新运行。
希望它有意义。