如何在Mobx中实现浅层数组复制

时间:2018-10-21 17:37:26

标签: javascript reactjs mobx

我曾经使用过类似_.CloneDeep的lodash函数来复制对象数组 但我需要此数组的浅表副本 请考虑以下代码:

 @observable.ref trades: Array<TradeType> = [];
 @action attachNewTrade = (trade: TradeType): Array<TradeType> => {
    let newTrades = _.CloneDeep(this.trades)
    newTrades.push(trade)
    this.trades = newTrades
  }

我在这个项目中使用React + Mobx 特别是我需要Observable函数,而不是immutable.js的JSON

2 个答案:

答案 0 :(得分:1)

这不是特定于mobx

 @observable.ref trades: Array<TradeType> = [];
 @action attachNewTrade = (trade: TradeType): Array<TradeType> => {
    this.trades = [...this.trades, trade]
 }

您需要复制的原因是React无法检测到对象/数组的内部更改,因此您需要更改引用以通知React某些更改。

如果您想以更多的方式解决问题,请检查https://github.com/mobxjs/mobx/issues/1489

答案 1 :(得分:1)

我遇到了同样的问题,我用mobx的toJShttps://mobx.js.org/refguide/tojson.html

解决了这个问题