Sanchez86 / mc2

0 stars 0 forks source link

do you actually use redux-thunk? #2

Open indeyets opened 1 month ago

indeyets commented 1 month ago

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

Sanchez86 commented 1 month 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.

indeyets commented 1 month ago

Да. Увидел. Я сначала не разглядел что ты диспатчишь fetchTodos. Если так, то всё ок.

Sanchez86 commented 1 month ago

Ок. Спасибо!