Как отправлять несколько действий один за другим

В моем приложении "реакция/редукция" я часто хочу отправить несколько действий за другим.

Учитывая следующий пример: после успешного входа я хочу сохранить пользовательские данные и после этого. Я хочу инициировать другое действие async, которое загружает конфигурацию приложения с сервера.

Я знаю, что я могу использовать redux-thunk для создания создателя действия, подобного этому

function loginRequestSuccess(data) {
  return function(dispatch) {
    dispatch(saveUserData(data.user))
    dispatch(loadConfig())
  }
}

Итак, мои вопросы:

  • Когда возвращается первый dispatch, состояние, уже измененное всеми редукторами, слушающими это действие? Мне интересно, выполняются ли два вызова отправки строго последовательно.
  • Этот подход считается наилучшей практикой для отправки нескольких действий? Если нет, что бы вы предложили в качестве альтернативы?

Спасибо за любую помощь!

Ответы

Ответ 1

Да redux-thunk позволяет делать то, что вы говорите, и да, это лучшая практика для отправки нескольких действий (которые я предпочитаю по сравнению с альтернативами из-за простоты). Состояние действительно обновляется, как только вы отправляете (к моменту его возвращения), поэтому вам предоставляется функция для извлечения состояния в thunk вместо простой ссылки на состояние. Таким образом, вы можете изменить состояние с помощью одной отправки, а затем вызвать getState(), чтобы получить ссылку на новое состояние для чтения, если вам нужно.

Ответ 2

redux-thunk - именно то, что вы ищете. Я считаю это очень хорошей практикой.

Чтобы ответить на ваш вопрос, действительно, когда первая отправка возвращается, состояние уже изменено вызываемыми редукторами.