Каков правильный способ запустить действие с состоянием siblings в React / Flux?

#reactjs #flux

#reactjs #поток

Вопрос:

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

Я визуализирую свой компонент пользовательского интерфейса ‘A’ внутри этого хаба. При нажатии кнопки Сохранения (т. Е. Компонента B) концентратора я хочу отправить состояние компонента A (моего пользовательского интерфейса) на сервер.

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

Подходы, которые я рассмотрел:

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

Комментарии:

1. Ну, как правило, в архитектуре Flux состояние полностью зависит от компонентов.. итак, предположительно, вы отправили бы действие, которое а) получит состояние из правильного хранилища, затем б) вызовет побочный эффект (сохранение на сервере), затем в) уведомит ваше дерево компонентов о завершении сохранения. Есть ли причина, по которой вы не можете сохранить состояние компонента в хранилище flux?

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

Ответ №1:

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

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

Можно прочитать состояние с помощью ссылок.