Редуктор реквизит меняется в компоненте - PullRequest
1 голос
/ 04 мая 2019

В моем приложении React у меня есть редуктор, который отправляет список в качестве реквизита для моего компонента.
Я копирую реквизит в местное состояние и показываю как выпадающий. Пользователь меняет раскрывающийся список, поэтому мое локальное состояние меняется. При нажатии кнопки «Отмена» я вызываю RedEx Toastr, который вызывает метод для сброса моего состояния с исходным props.list. Но по какой-то причине props.list также изменился так же, как и мое состояние. С моим знанием я думал, что реквизиты, переданные компоненту, не будут изменены, пока я снова не вызову создателя действия.

Кто-нибудь сталкивался с подобной проблемой? или я делаю что-то не так Извините, что не разместил код, который я подготовлю демо, если это необходимо. Спасибо!

1 Ответ

0 голосов
/ 04 мая 2019

То, что вы делаете, является анти-паттерном, поскольку вы нарушаете правило реакции единственного источника истины.Вы не можете внутренне удерживать состояние в компоненте, связанном с вашим состоянием избыточности, и ожидать, что оно будет работать гладко.Аналогичная проблема разрушения единственного источника правды возникает при использовании исключительно React без Redux и при попытке передать реквизит как состояние.В этом случае есть новый хук жизненного цикла static getDerivedStateFromProps, но даже этот хук рекомендуется использовать редко, о нем можно прочитать здесь .Поэтому, если вы намереваетесь восстановить исходное состояние, вы можете:

  1. Использовать static getDerivedStateFromProps (зарезервировано в основном для пользовательского интерфейса)
  2. Использовать ключевую опору, котораявернет вас в исходное состояние
  3. Воспользуйтесь помощником для напоминания, таким как memoize-one
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...