Какие плюсы и минусы Thunk-Based Development

«Какие плюсы и минусы Thunk-Based Development» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  1. Простота внедрения — не требует сложных абстракций
  2. Хорошо подходит для простых асинхронных операций (запросы API)
  3. Понятный поток данных — действия диспатчатся последовательно
  4. Минимальный boilerplate по сравнению с Saga

Минусы:

  1. Сложность тестирования из-за side effects
  2. Проблемы с композицией асинхронных операций
  3. Callback hell при сложных цепочках действий
  4. Нет контроля над отменой операций
// Пример thunk
const fetchUser = (id) => async (dispatch) => {
  dispatch({ type: 'FETCH_USER_START' });
  try {
    const user = await api.getUser(id);
    dispatch({ type: 'FETCH_USER_SUCCESS', payload: user });
  } catch (error) {
    dispatch({ type: 'FETCH_USER_ERROR', payload: error });
  }
};