Я хотел бы отправить действие после того, как первое было обработано редюсерами.
Вот мой вариант использования. Мой компонент позволяет пользователю выбирать список заметок (этот список хранится в редуксе). На основании некоторых действий пользователя из этого списка может быть выбрана случайная заметка и сохранена в магазине.
На скриншоте вы можете видеть кнопки. «Выбрать все» и «Отменить выбор» действуют на список возможных заметок. «Старт» выбрать заметку из списка.
У меня проблема с "кнопкой сброса". Предполагается цепочка «выбрать все» и «начать», и я не знаю, как это сделать. Я попробовал наивно:
const reset = function () {
dispatch(selectAll());
dispatch(pickANote());
}
В этом примере я сталкиваюсь с тем, что я считаю гонкой данных. Второе действие выбирает заметку из обновленного списка заметок.
Покопавшись в интернете, я нашел только случаи цепочек действий на основе вызовов API с редукционным переходом. У меня проблема в том, что я не знаю, как что-то инициировать при обработке действия (что очевидно при вызове API)
Итак, есть 3 решения:
- Я упускаю что-то очевидное
- Я иду туда, куда не ступала нога человека
- Я делаю что-то против шаблона
Любая помощь приветствуется.
1 ответ
Хорошо, я нашел свой ответ.
Неудивительно, я думал об антипаттерне.
В руководстве по стилю redux есть 2 пункта, которые приводят меня к решение.
- Настоятельно рекомендуется отправлять одно действие, которое обрабатывается несколькими редьюсерами.
- Настоятельно рекомендуется размещать логику внутри редукторов.
Следствием этого является то, что я должен отправлять «необработанные данные», а затем вычислять редукторы значений. Следуя этому пути, я не зависел от значений, уже находящихся в хранилище для следующих обновлений, и поэтому я не сталкивался с какой-либо гонкой данных.
Похожие вопросы
Новые вопросы
reactjs
React — это библиотека JavaScript для создания пользовательских интерфейсов. Он использует декларативную парадигму на основе компонентов и стремится быть эффективным и гибким.