Как отправлять несколько действий один за другим
В моем приложении "реакция/редукция" я часто хочу отправить несколько действий за другим.
Учитывая следующий пример: после успешного входа я хочу сохранить пользовательские данные и после этого. Я хочу инициировать другое действие async, которое загружает конфигурацию приложения с сервера.
Я знаю, что я могу использовать redux-thunk
для создания создателя действия, подобного этому
function loginRequestSuccess(data) {
return function(dispatch) {
dispatch(saveUserData(data.user))
dispatch(loadConfig())
}
}
Итак, мои вопросы:
- Когда возвращается первый
dispatch
, состояние, уже измененное всеми редукторами, слушающими это действие? Мне интересно, выполняются ли два вызова отправки строго последовательно.
- Этот подход считается наилучшей практикой для отправки нескольких действий? Если нет, что бы вы предложили в качестве альтернативы?
Спасибо за любую помощь!
Ответы
Ответ 1
Да redux-thunk позволяет делать то, что вы говорите, и да, это лучшая практика для отправки нескольких действий (которые я предпочитаю по сравнению с альтернативами из-за простоты). Состояние действительно обновляется, как только вы отправляете (к моменту его возвращения), поэтому вам предоставляется функция для извлечения состояния в thunk вместо простой ссылки на состояние. Таким образом, вы можете изменить состояние с помощью одной отправки, а затем вызвать getState(), чтобы получить ссылку на новое состояние для чтения, если вам нужно.
Ответ 2
redux-thunk
- именно то, что вы ищете. Я считаю это очень хорошей практикой.
Чтобы ответить на ваш вопрос, действительно, когда первая отправка возвращается, состояние уже изменено вызываемыми редукторами.