React + mobx对象不断更新

时间:2018-01-16 19:53:47

标签: reactjs mobx

我遇到的问题是我有一个在整个类中使用的对象,它存储在可观察值下,我有另一个对象存储为第一个对象的备份,并且值是不可观察的,它在构造函数中创建(如果我将外部构造函数创建为不可观察的值,则会出现同样的问题)。例如:

some class{

    @observable people = some object value

    constructor(props){
        super(props)
        this.oldValue = {}
    }

    componentWillReceiveProps(){
        this.oldValue = this.people
    }

}

现在,如果人物对象得到更新,让我们说值已更改,this.oldValue也会因为某些原因而更新,甚至认为它不应该更新。如果我将this.oldValue变量设置为字符串,然后像this.oldValue = object.name那样给出值,则旧值将不会按预期更新。

什么可能导致问题?为什么在设置为对象而不是字符串时更新值?

2 个答案:

答案 0 :(得分:0)

通过克隆对象而不是分配对象来解决我的问题。例如,而不是:

this.oldValue = this.currentValue

我使用Lodash库来克隆:

this.oldValue = _.clone(this.currentValue)

因此,即使更新了this.currentValue值,this.oldValue值也会保留未来的参考值

我认为我的问题是我使用相同的引用创建了具有不同变量

的更新的相同对象

答案 1 :(得分:0)

不确定您要实现的目标,但我认为重新分配observable值不是mobx设计的方式。

如果您的oldValue需要从observable数据中获得,请使用computed

Mobx作者自己建议不要复制可观察数据并将其存储在本地:https://mobx.js.org/best/pitfalls.html#don-t-copy-observables-properties-and-store-them-locally