반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 기계식키보드 #nuphy
  • C++
  • 티스토리챌린지
  • 전공 요약 #운영체제
  • 면접
  • 전공 요약 #데이터베이스
  • GraphQL
  • A형
  • 삼성SDS
  • 전공요약
  • 공간복잡도
  • 백준
  • nextjs
  • 오블완
  • 언어
  • 알고리즘
  • 삼성SW역량테스트
  • 전공 요약 #네트워크
  • Next.js #graphql #tailwind.css
  • 나의 해방일지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

React Query onError 가 동작하지 않는 이슈
프론트엔드 개발/React.js

React Query onError 가 동작하지 않는 이슈

2022. 12. 21. 00:34
728x90
반응형

https://stackoverflow.com/questions/73427408/react-query-onerror-not-executing-on-thrown-error

 

React-query onError not executing on thrown Error

Query: const { data: post, isError, error } = useQuery<PostResponseDto>( ['fetch-post', params], () => fetchPost(params!.postId), { refetchOnMount: true, onError: (err) =>...

stackoverflow.com

현재 위와 비슷한 상황에 고통받고 있습니다...

 

API 요청시 Axios Intercepter 를 사용하는 Axios Instance 로 요청하게 되고,

그리고 이 요청을 try catch 문 으로 감싸고 있으며, catch 문에서 return 을 해주는 구조로 사용 중입니다.

 

문제는 Error 가 발생했을때 엉뚱하게도 useQuery 의 onError 가 아니라 onSuccess 가 수행됩니다.

아래와 같이 onSucess의 res 에 API 응답 데이터가 아니라 AxiosError 타입의 데이터가 들어갑니다.. ㅠㅠ

onSuccess(res) {

 

}

 

물론 res 가 AxiosError 타입인지만 확인해서 처리하면 상관은 없겠다만...

그렇게 하고 싶지는 않네요.

 

여러가지로 시도를 해봤는데

try catch 문을 제거하면 아예 에러 감지가 안되는 듯 하고

Axios Intercepter 를 걷어내어도 똑같습니다.

아예 useQuery 의 queryFn 안에다가 axios Instance 가 아니라  쌩 axios 를 바로 호출했는데도 안되네요.

🤨🤨🤨🤨🤨🤨🤨🤨🤨🤨🤨

 

https://codevoweb.com/react-query-context-api-axios-interceptors-jwt-auth/

 

React Query, and Axios Interceptors JWT Authentication - CodevoWeb

React Query is a server state management library. This article will teach you how to implement JWT Authentication and Authorization with React Query, Axios interceptors,...

codevoweb.com

인터넷에서 찾은 이 예제에서 Axios Intercepter 를 사용하고 onError 로 처리하는 코드가 있는걸 보면

안되는건 아닌것 같은데 ...

 

 

2022.12.21 (수)

 

드디어 해결했습니다~

ㅋㅋㅋ

 

공용 API 호출 함수의 반환 방식이 잘못된 것이었습니다.

해결 방법은 then~ catch 문을 제거하고 그냥 return 하게 만들어야 했습니다.

 

catch 를 하면 error 가 unknown 타입으로 나오는데

함수 반환값을 Promise<T> 이런식으로 제네릭으로 해둔 것이랑 충돌이 났던것으로 보입니다.

아무래도 error 를 unknown 인 그 상태 그대로 return 하지 않고서는 error 라고 인식하지 못하는가 봅니다..

export const tempRequestWithAuthCheck = async <T>({
  ...
}: 타입): Promise<T> => {

  // 기존에 사용하던 방식.
  return axoisInstance.request<T>({
   ...
  }).then(res=>{ ... return res }).catch(error=> { ... return error })


  // try catch 로 바꾸면 error 가 unknown 이라 return 안됨. 함수 반환값을 unknown으로 바꿔야 함.
  try{
    const res = await axoisInstance.request<T>({)
  }catch(error){
    return error -> 이게 안되게 됨
  }


  // 제대로 동작한 방식
  const res = await axoisInstance.request<T>({
   ...
  })
  return res.data
}

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드 개발 > React.js' 카테고리의 다른 글

리액트에서 마우스가 브라우저 창 밖에 있는지 감지하기  (0) 2023.01.15
리액트 장치 유형 감지하기  (0) 2023.01.15
리액트 URL Hash기반의 서브페이지 관리 체계 도입  (0) 2022.09.11
리액트 이론 정리 (JSX, Component, Virtual DOM)  (0) 2022.01.10
리액트 props.children 이란 무엇인가?  (0) 2021.12.17
    '프론트엔드 개발/React.js' 카테고리의 다른 글
    • 리액트에서 마우스가 브라우저 창 밖에 있는지 감지하기
    • 리액트 장치 유형 감지하기
    • 리액트 URL Hash기반의 서브페이지 관리 체계 도입
    • 리액트 이론 정리 (JSX, Component, Virtual DOM)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바