Загрузка...
Загрузка...
Redux Thunk — это middleware для Redux, который позволяет работать с асинхронными действиями. Thunk позволяет действиям возвращать функции вместо простых объектов, что делает возможным отложенное выполнение dispatch.
Thunk позволяет action creator возвращать функцию вместо объекта действия. Эта функция может:
// Без Thunk (синхронное действие)
const increment = () => ({
type: 'INCREMENT'
});
// С Thunk (асинхронное действие)
const incrementAsync = () => {
return (dispatch) => {
dispatch({ type: 'INCREMENT_REQUEST' });
setTimeout(() => {
dispatch({ type: 'INCREMENT_SUCCESS' });
}, 1000);
};
};
// Пример с API запросом
const fetchUser = (userId) => {
return async (dispatch, getState) => {
try {
dispatch({ type: 'FETCH_USER_REQUEST' });
const response = await fetch(`/api/users/${userId}`);
const data = await response.json();
dispatch({
type: 'FETCH_USER_SUCCESS',
payload: data
});
} catch (error) {
dispatch({
type: 'FETCH_USER_ERROR',
error: error.message
});
}
};
};
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
const store = createStore(
rootReducer,
applyMiddleware(thunk)
);
Преимущества Redux Thunk:
Redux Thunk особенно полезен для обработки API запросов и других асинхронных операций в Redux приложениях.