Why mobx computed getter doesn't call after change value

You only changed name property of the object, not the object itself. And Object.values only dereferences direct values (objects) of your fields object, not the inner things, like name. So computed don't need to rerun because things that were referenced in that computed didn't change.

hasError did rerun because you actually dereference name property inside of it, so when name changes it reruns.

Hope it makes sense.