Javascript Mobx';s可观测丢失子对象相等

Javascript Mobx';s可观测丢失子对象相等,javascript,mobx,Javascript,Mobx,当我从普通对象创建一个可观察对象时,它包含的字段实际上是相同的对象,这个属性不再是相等的对象。所以,如果我改变了一个人的财产,第二个人就不会动 有没有合适的方法来处理这个问题 从“mobx”导入{observable}; const status={id:“某些对象”}; 常量对象={ 地位 状态2:状态 }; const observeobj=可观测(obj); 常量isEqual=observegeobj.status2==observegeobj.status; document.body

当我从普通对象创建一个可观察对象时,它包含的字段实际上是相同的对象,这个属性不再是相等的对象。所以,如果我改变了一个人的财产,第二个人就不会动

有没有合适的方法来处理这个问题

从“mobx”导入{observable};
const status={id:“某些对象”};
常量对象={
地位
状态2:状态
};
const observeobj=可观测(obj);
常量isEqual=observegeobj.status2==observegeobj.status;
document.body.innerHTML=`Is equal=${isEqual}`;
console.log(observeObj);

在常规对象上调用
可观察对象时,它不会对其进行变异,而是创建新的可观察对象。MobX递归地对每个内部对象或值执行此操作,这就是为什么
observegeobj.status2
observegeobj.status
不相等的原因。它们是从同一个“蓝图”对象创建的,但如果我可以这么说的话,每一个都是独立的副本

原始的
status
仍然是常规对象,而
status2
observeObj
中成为可观察对象。希望它有意义

您可以做的是,在将其传递到
obj
中之前,让它自己可以观察到
状态,如下所示:

const status=可观察({id:“某些对象”});
常量对象={
地位
状态2:状态
};
const observeobj=可观测(obj);
observableObj.status 2===observableObj.status/=>真
这样Mobx就不会对它做任何事情,因为它已经是一个可观察的


Codesandbox:

在常规对象上调用
可观察对象时,它不会对其进行变异,而是创建新的可观察对象。MobX递归地对每个内部对象或值执行此操作,这就是为什么
observegeobj.status2
observegeobj.status
不相等的原因。它们是从同一个“蓝图”对象创建的,但如果我可以这么说的话,每一个都是独立的副本

原始的
status
仍然是常规对象,而
status2
observeObj
中成为可观察对象。希望它有意义

您可以做的是,在将其传递到
obj
中之前,让它自己可以观察到
状态,如下所示:

const status=可观察({id:“某些对象”});
常量对象={
地位
状态2:状态
};
const observeobj=可观测(obj);
observableObj.status 2===observableObj.status/=>真
这样Mobx就不会对它做任何事情,因为它已经是一个可观察的

代码沙盒: