2016-10-21 6 views
1

У меня есть компонент Hub, который я потребляю, который поддерживает некоторые компоненты в качестве параметров, которые отображаются в строке. Например. Сохранить (обозначается как компонент B).Каков правильный способ запустить действие с состоянием братьев и сестер в React/Flux?

Я отризываю свой компонент пользовательского интерфейса «А» внутри этого концентратора. При нажатии кнопки «Сохранить» (то есть компонент B) концентратора я хочу отправить состояние компонента A (мой пользовательский интерфейс) на сервер.

Мое ограничение: - Я не могу сохранить состояние на уровне концентратора, потому что его слишком высокий уровень иерархии и многие другие компоненты также отображаются на других вкладках в зависимости от URL-адреса.

подходов Я рассмотрел:

  1. Используйте реф, чтобы получить состояние компоненты А когда кнопка Save нажата.
  2. Передайте объект от концентратора к компоненту A. Компонент A сохранит свое состояние в этом объекте, чтобы всякий раз, когда родитель нуждается в состоянии, он доступен для него.
  3. Каскадирование действий. В этом случае компонент A будет прослушивать действие (возможно, но сильно отклонено, так как оно нарушает поток).
+0

Как правило, в архитектуре Flux состояние живет вне компонентов полностью .. поэтому предположительно вы отправите действие, которое будет: a) получить состояние из правильного хранилища, а затем b) вызвать побочный эффект (сохранить на сервер), затем c) известить ваше дерево компонентов, которое сохранили. Есть ли причина, по которой вы не можете сохранить состояние компонента в хранилище потоков? – azium

+0

Я делаю формы и текущие данные формы находятся в состоянии. Более ранние данные формы хранятся. Сравнение между ними говорит мне, следует ли включать сохранение или нет. –

ответ

0

После прочтения многого, чтение состояния ребенка с помощью refs является решением этой проблемы.

Вы не должны изменять состояние ребенка или методы вызова с использованием ссылок.

Это нормально читать состояние, используя ссылки.