为什么 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 更改时它会重新运行。

希望它有意义。