Реагировать на глобальное состояние обновления локального состояния - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно обновить локальное состояние после обновления глобального состояния.

Я пробовал mapStateToProps, но это только отображает глобальное состояние в компонент, но не обновляет локальное состояние.

Пожалуйста, обратитесь к изображению, чтобы увидеть код.

после обновления mapStateToProps, значения selected_smsf_member должны быть проанализированы в локальное состояние, которое используется для создания формы.

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

enter image description here

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Как видите, mapStateToProps, его название говорит обо всем, оно отобразит состояние на реквизиты, вы можете получить доступ к его переменной в ваших реквизитах, например, this.props.selected_smsf_member в вашем component.Если вы все еще хотите обновить локальное состояние, используя getDerivedStateFromProps(), но сначала прочтите этот блог: https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

1 голос
/ 05 апреля 2019

Вы можете использовать getDerivedStateFromProps . Вы можете проверить свои реквизиты и получить из них состояние, когда они меняются. Несколько замечаний:

  • Вы должны инициализировать ваше state.memberDetailsForm как ложное значение и проверить, что в вашей функции getDerivedState в противном случае оно будет выводить ваше состояние КАЖДЫЙ РАЗ, когда изменение реквизита приведет к неожиданным последствиям.
  • Я не знаю точных сопоставлений с вашим кодом, поэтому не просто скопируйте Пример ниже и ожидаем, что это сработает.

При реализации этого метода вы получите желаемый результат.

static getDerivedStateFromProps(props, state) {
  if (!state.memberDetailsForm) {
    return { memberDetailsForm: props.selected_smsf_member }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...