Ответ
Redux Thunk — это middleware для Redux, позволяющий обрабатывать асинхронные действия (actions). Он проверяет, является ли action функцией, а не объектом, и если да — вызывает её, передавая dispatch
и getState
.
Пример:
const fetchData = () => {
return (dispatch, getState) => {
dispatch({ type: 'FETCH_START' });
fetch('/api/data')
.then(res => res.json())
.then(data => dispatch({ type: 'FETCH_SUCCESS', payload: data }))
.catch(err => dispatch({ type: 'FETCH_ERROR', error: err }));
};
};
// Использование:
dispatch(fetchData());
Когда использовать:
- Асинхронные запросы (API, таймеры)
- Условный dispatch (например, проверка состояния перед действием)
Альтернативы: Redux Saga, RTK Query. Thunk прост для базовых сценариев.