Делает ли мелкая копия состояния ошибки? - PullRequest
0 голосов
/ 18 февраля 2019

Обновление свойства состояния без его копирования и использования setState() может привести к ошибкам, указанным в этой статье .Что я хочу знать, так это то, что если у меня есть список объектов в состоянии, например, так:

this.state = {
  myList: [
    {name: "Nestor"},
    {name: "Rufus"}
  ]
};

Приведет ли это к ошибкам, если я просто обновлю его с мелкой копией, как это:

let list = [...this.state.myList];
//I modify the list here
this.setState({myList: list});

Или мне нужно сделать глубокую копию, чтобы быть абсолютно уверенным, что ошибок не будет?

let list = JSON.parse(JSON.stringify(this.state.myList));
//I modify the list here
this.setState({myList: list});

Спасибо за помощь.

1 Ответ

0 голосов
/ 18 февраля 2019

Это зависит от вашего варианта использования.

Большую часть времени вы можете получить с мелкой копией.

Но если по какой-то причине пропускаемый вами (или состояние) требует глубокого сравнения, вам придется прибегнуть к помощив такие библиотеки, как react-fast-compare.

Использование мелкой копии не приведет к ошибкам, в худшем случае некоторые из ваших компонентов не будут правильно отображаться.

Возможно, вы захотите прочитать эти:

https://daveceddia.com/react-redux-immutability-guide/

https://github.com/FormidableLabs/react-fast-compare

...