Является ли состояние, возвращаемое из ловушки useReducer, «глубокой копией» или ссылкой на вывод редукторов? - PullRequest
0 голосов
/ 02 июля 2019

В настоящее время я выполняю глобальную обработку состояний в React, используя Context API в сочетании с хуком useReducer.

У меня есть две проблемы, касающиеся изменчивости:

  • При обновлениив моих редукторах нужно ли мне, например, использовать функцию cloneDeep Лодаша, чтобы разорвать ссылку между объектами, входящими в мой редуктор, и сохраненным состоянием?
  • Возможно ли разрушить глобальное состояние, вручную изменяя его за пределами редукторов, или оно будет вести себя как «нормальное состояние реакции» в том смысле, что ручные мутации будут перезаписаны в течение следующего цикла обновления?

Для справки: Документы

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

И useState, и useReducer дают точную ссылку на значение, которое вы сохранили (либо вызывая someSetter(newValue), либо возвращая значение из функции редуктора).

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

0 голосов
/ 02 июля 2019

Я бы прочитал это.

https://kentcdodds.com/blog/how-to-use-react-context-effectively

Это действительно хорошее руководство о том, как правильно использовать контекст реакции в сочетании с useReducer.

Дайте мне знать, если это поможет.

...