React/Alt - избежать отправки внутри диспетчерской при ответе на ввод пользователя?
У меня есть компонент, который принимает пользовательский ввод. Когда они сохраняются, я использую действие, чтобы обновить состояние магазина
В ответ на эту новую информацию компонент результатов должен выполнить асинхронную операцию, а затем ответить, когда вернется новая информация.
Независимо от того, что я пытаюсь, мне кажется, что я остался с взлом setTimeout
или ошибка отправки в пределах отправки.
Асинхронная операция определяется через источник данных и имеет свое собственное хранилище, как описано здесь. Как правильно структурировать это поведение?
- Пользовательский ввод получен компонентом ввода.
- Компонент ввода использует действие для обновления состояния магазина
- В настоящее время хранилище пытается запустить асинхронную операцию, необходимую компоненту вывода.
- На данный момент мой выбор, похоже, ошибка Dispatch-with-dispatch или решение взлома, включающее
setTimeout
, Ни один не чувствует себя правильным.
Что мне не хватает?
2 ответа
Игнорируйте примеры об источниках данных. Не использовать registerAsync
в магазинах.
Вместо этого используйте действия для выполнения асинхронного поведения и хранения результатов обновления. В приведенном вами примере сделайте это из компонента ввода:
Action1.updateStore()
AsyncAction2.run()
Затем используйте просмотр магазина AsyncAction2
действия по обновлению и информированию компонентов результатов.
Если вы уверены, что хотите отправлять в этот момент и просто хотите избежать ошибки "отправка в пределах отправки", вы можете использовать метод alt.defer (см.: http://alt.js.org/docs/actions/).