Как реализовать мелкое копирование массива в mobx - PullRequest
0 голосов
/ 21 октября 2018

Я использовал подобную функцию 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, а не toJSON из immutable.js

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

У меня возникла та же проблема, и я решил ее с помощью toJS: https://mobx.js.org/refguide/tojson.html

от mobx
0 голосов
/ 22 октября 2018

Это не относится к 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

...