Open indeyets opened 4 months ago
Я использую redux-thunk в файле actions.js Я создал несколько action creators. И создал thunk для асинхронного действия.
const fetchTodosRequest = () => ({
type: FETCH_TODOS_REQUEST,
});
const fetchTodosSuccess = (data) => ({
type: FETCH_TODOS_SUCCESS,
payload: data,
});
const fetchTodosFailure = (error) => ({
type: FETCH_TODOS_FAILURE,
payload: error,
});
export const fetchTodos = () => {
return async (dispatch) => {
dispatch(fetchTodosRequest());
try {
const response = await fetch(
"https://jsonplaceholder.typicode.com/todos"
);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const data = await response.json();
dispatch(fetchTodosSuccess(data));
} catch (error) {
dispatch(fetchTodosFailure(`Fetch failed: ${error.message}`));
}
};
};
fetchTodos - это функция, возвращающая асинхронную функцию (thunk). Этот thunk принимает dispatch в качестве аргумента. Внутри thunk, сначала вызывается dispatch(fetchTodosRequest()), чтобы уведомить Redux о начале асинхронного запроса. Затем выполняется асинхронный запрос к API с использованием fetch. Если запрос успешен, результат (данные) отправляется через dispatch(fetchTodosSuccess(data)). Если запрос завершается с ошибкой, ошибка отправляется через dispatch(fetchTodosFailure(error.message)). Возможно я не правильно понял принцып работы redux-thunk.
Да. Увидел. Я сначала не разглядел что ты диспатчишь fetchTodos. Если так, то всё ок.
Ок. Спасибо!
Redux-Thunk is initialized here: https://github.com/Sanchez86/mc2/blob/49a71ad05e513de395c0e8ea047d5e4e2e604a45/src/store/index.js#L9
But do you actually use it somewhere? looks like you fetch data via the manuall API-call, without using middleware.
And if it's not needed then it can be removed both from here and from dependencies