如何在mobx中实现浅数组复制

问题描述 投票:1回答:2

我用lodash函数就像_.CloneDeep用于对象数组复制但是我需要这个数组的浅拷贝请考虑以下代码:

 @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

javascript reactjs mobx
2个回答
1
投票

这不是mobx特有的

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

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

如果你想要更多mobx方式的解决方案,请检查https://github.com/mobxjs/mobx/issues/1489


1
投票

我有同样的问题,我用mobx的toJS解决了它:https://mobx.js.org/refguide/tojson.html

© www.soinside.com 2019 - 2024. All rights reserved.