@EvgenyHalvin

Как правильно обработать ошибку axios?

Всем доброго времени суток!

Пилю проект на React(typescript).
Для работы с запросами использую react-query, axios и open-api generator.

Столкнулся с ошибкой, которую ловлю в dev-режиме:
Uncaught runtime errors:
ERROR
Network Error
AxiosError: Network Error
    at XMLHttpRequest.handleError (http://localhost:3000/static/js/...)


Что делаю.
Создал хуки мутации, для POST-запроса. Один "глупый" (тот, что выше), другой "умный"(ниже):
export const usePostSome = (
  config?: UseMutationOptions<
    AxiosResponse<CustomSuccessResponse, unknown>,
    AxiosError<CustomErrorResponse, unknown>,
    RequestData
  >,
) => {
  return useMutation(
    (data: RequestData) =>
      myApi.postSome(data),
    config,
  );
};

export const useCreateSome = () => {
  const mutation = usePostSome ({
    onSuccess: ({ data }) => {
      // обработка успешного сценария
    },
    onError: (error) => {
      // обработка ошибки
     console.log(error)
    },
    onSettled: () => {...}
  });

  const createSome = (data: RequestData) => mutation.mutateAsync(data);

  return { ...mutation, createSome };
};


После, использую хук useCreateSome в компоненте следующим образом:
const { createSome, isLoading } = useCreateSome();

  const onSubmitHandler = (values: RequestData) => {
    ...
    createSome(values);
  };


Что ожидаю.
Ожидаю обработку ошибок промиса без каких-либо ошибок. Приложение не ломается, но вылезает ошибка в dev-режиме. Если написать обработку через catch, то ошибка пропадает.

Вариант без ошибок, в котором сценарий onError срабатывает и пропадает ошибка райнтайма:
const { createSome, isLoading } = useCreateSome();

  const onSubmitHandler = (values: RequestData) => {
    ...
    createSome(values).catch((err) => console.log(err));
  };


Что я могу упускать? Где ошибаюсь? Буду рад ответу. Задавайте уточняющие вопросы.
  • Вопрос задан
  • 542 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 22:44
500 руб./в час
30 апр. 2024, в 21:45
20000 руб./за проект
30 апр. 2024, в 21:36
1500 руб./в час