Redux: как изменение состояния путем создания мелкой копии может вызвать проблемы в редукторе? - PullRequest
0 голосов
/ 26 октября 2019

Создание мелкой копии состояния указано в документации Redux как одна из распространенных ошибок при обновлении вложенного состояния :

function updateNestedState(state, action) {
  // Problem: this only does a shallow copy!
  let newState = { ...state }

  // ERROR: nestedState is still the same object!
  newState.nestedState.nestedField = action.data

  return newState
}

Я до сих пор не понимаю, почему этоэто проблема с Redux. Разве редуктор в Redux не работает синхронно, поэтому, когда редуктор возвращается, Redux будет учитывать только возвращенное новое состояние и отменять старое?

1 Ответ

0 голосов
/ 28 октября 2019

Основываясь на моем обсуждении с Марком Эриксоном (Redux mantainer) на разделе комментариев к связанному вопросу , это не вызовет проблем с Redux, но сломает библиотеки и инструменты, встроенные в него (Redux DevTools, React-Redux, React и т. Д.), Которые полагаются на правильное использование неизменности . Мои основные моменты:

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

Источник: https://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-1/#summarizing-redux-s-technical-requirements

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...