【发布时间】:2018-01-16 19:53:46
【问题描述】:
我遇到的问题是我有一个在整个类中使用的对象,该对象存储在可观察值下,我有另一个对象存储为第一个对象的备份,并且该值是不可观察的,并且它在构造函数中创建(如果我将外部构造函数创建为不可观察的值,则同样的问题)。例如:
some class{
@observable people = some object value
constructor(props){
super(props)
this.oldValue = {}
}
componentWillReceiveProps(){
this.oldValue = this.people
}
}
现在如果 people 对象被更新,假设值发生了变化,this.oldValue 也会因为某种原因被更新,甚至认为它不应该被更新。如果我将this.oldValue 变量设置为一个字符串,然后像this.oldValue = object.name 这样给出值,那么旧值将不会按预期更新。
什么会导致问题?为什么值被设置为对象而不是字符串时被更新?
【问题讨论】:
-
重新阅读您的问题后,您的伪代码没有多大意义。你能发布一个物理证明这个问题的sn-p吗?
-
代码中的结构与我的伪代码中的结构相同。对不起,我不能发布任何代码,因为课程很大并且由于工作版权
-
将
this.oldValue分配给this.people应该取消对可观察属性的引用,并且只复制一次值。文档很好地解释了这一点here。如果没有一些实际代码,无法进一步评论。 -
嗯,这就是我的想法,但事实并非如此。看起来它使用引用制作了同一个对象的副本,只是使用了一个不同的变量,该变量得到了更新以及原始值