Реагировать Производные Реквизит - PullRequest
0 голосов
/ 10 марта 2020

Простой обзор: рассмотрим следующую структуру:

  • Приложение (удерживает users в состоянии)
  • Форма (users передается как props, хранится локально this.state = { data: this.props.data })
    • Строка формы (user)
    • Строка формы (user)
    • Строка формы (user)

При обновлении строки обновляется state из Form. Это позволяет мне управлять данными на Form независимо от App state. Затем я могу контролировать сохранение данных в App state, когда пользователь нажимает кнопки «Сохранить» или «Добавить» и т. Д. c. Я не хочу, чтобы состояние приложения обновлялось немедленно, однако, похоже, что оно обновляется, оно возвращается в состояние приложения. Я попытался вместо этого использовать оператор спреда - нет go.

Codepen: https://codepen.io/MrCGates/pen/YzXYMEv

Если вы посмотрите на этот пример, он НЕ будет обновляться Главный дисплей состояния, однако, если вы проверяете, фактическое состояние меняется. Хотя это хорошо для отображения, мне нужно, чтобы он сохранял состояние только тогда, когда пользователь нажимает кнопку «Сохранить». В настоящее время мое приложение работает правильно, за исключением того факта, что при обновлении строки № 2 любые изменения в строках № 1 и № 3 также обновляются, поскольку я беру состояние Main, нахожу строку № 2 и обновляюсь. Ну, # 1 и 32 обновляются в состоянии, так что это в основном обновляет все состояние.

1 Ответ

0 голосов
/ 10 марта 2020

Мне не обязательно нравится техника, но я смог это исправить с помощью:

this.state {data: JSON .parse (JSON .stringify (this.props.data ))};

Проблема заключалась в том, что при копировании массива в качестве ссылки будет использоваться копирование, даже с учетом распространения, карты и т. Д. c. Использование JSON ... создает глубокую копию.

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