Ответ
Плюсы:
- Простота внедрения — не требует сложных абстракций
- Хорошо подходит для простых асинхронных операций (запросы API)
- Понятный поток данных — действия диспатчатся последовательно
- Минимальный boilerplate по сравнению с Saga
Минусы:
- Сложность тестирования из-за side effects
- Проблемы с композицией асинхронных операций
- Callback hell при сложных цепочках действий
- Нет контроля над отменой операций
// Пример 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 });
}
};