useQuery 사용 시 Error: No QueryClient set, use QueryClientProvider to set one 에러 해결

2024. 6. 11. 16:28· 프로젝트

!!! 프로젝트에 적용하려고 하자마자 에러가 떴다.. 

에러 발생 ..

그래서 처음 이유로는 App 을 QueryClient 로 감싸주지 않았다는 이유였는데 하지만 나는 모두 감싸준 상태였다.. 

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";
import "./index.css";
import { BrowserRouter } from "react-router-dom";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";

const queryClient = new QueryClient();

ReactDOM.createRoot(document.getElementById("root")!).render(
  <QueryClientProvider client={queryClient}>
    <BrowserRouter>
      <App />
      <ReactQueryDevtools />
    </BrowserRouter>
  </QueryClientProvider>,
);

 

왜 안될까 좌절을 하던 중 .. 이유를 깨달아버렸다 !!  바로 버전 문제였던것 .. 

 

문제 코드 

// 유저 관련 데이터 get 요청 쿼리를 저장
import { useQuery } from "react-query";
import client from "../../../config/axios";

const fetchMemberInfo = async () => {
  const token = localStorage.getItem("accessToken");
  const headers = token ? { Authorization: `Bearer ${token}` } : {};
  const response = await client.get("/api/members/me", { headers });
  return response.data;
};

export const useMemberInfoQuery = () => {
  const { isLoading, isError, data, error } = useQuery(
    "memberInfo",
    fetchMemberInfo,
  );

  return { isLoading, isError, data, error };
};

 

내 코드는 현재 이렇게 작성되어있는데 v5부터는 단일 객체를 전달하도록 변경 되었는데 나는 v4 버전대로 코드를 작성하고 있던 것이었다. 

그래서 해결 방법으로 

1. import {useQuery} from "react-query" 를 @tanstack/react-query에서 import 해주기 

2. useQuery에 단일 객체로 전달해주기 

 

이렇게 변경하니 오류 없이 잘 동작하였다 !! 

 

// 유저 관련 데이터 get 요청 쿼리를 저장
import { useQuery } from "@tanstack/react-query";
import client from "../../../config/axios";

const fetchMemberInfo = async () => {
  const token = localStorage.getItem("accessToken");
  const headers = token ? { Authorization: `Bearer ${token}` } : {};
  const response = await client.get("/api/members/me", { headers });
  return response.data;
};

export const useMemberInfoQuery = () => {
  const { isLoading, isError, data, error } = useQuery({
    queryKey: ["memberInfo"],
    queryFn: fetchMemberInfo,
  });

  return { isLoading, isError, data, error };
};

 

 

이번 오류를 통해 사용하고 있는 버전에 맞게 코드를 작성해야한다는 점을 뼈저리게 느끼게 되었다 ... !! 

'프로젝트' 카테고리의 다른 글

[프로젝트] SingK 를 마치고 쓰는 회고  (0) 2024.09.19
[프로젝트] 회원정보 조회 및 수정 시 리액트 쿼리 사용하기 !  (0) 2024.06.11
[프로젝트] SingK 프로젝트 돌입 !  (0) 2024.05.04
[프로젝트] 구르미월드 개발을 마치고 쓰는 회고 👩🏻‍💻  (1) 2024.03.02
[프로젝트] '구르미 월드' 프로젝트 돌입 !  (1) 2023.12.20
'프로젝트' 카테고리의 다른 글
  • [프로젝트] SingK 를 마치고 쓰는 회고
  • [프로젝트] 회원정보 조회 및 수정 시 리액트 쿼리 사용하기 !
  • [프로젝트] SingK 프로젝트 돌입 !
  • [프로젝트] 구르미월드 개발을 마치고 쓰는 회고 👩🏻‍💻
배트리버
배트리버
🐾 사람 좋아, 개발 좋아 🐾 궁금한 건 끝까지 파고들고, 배운 건 즐겁게 나누는 개발자의 놀이터
배트리버
리트리버의 개발 놀이터
배트리버
전체
오늘
어제
  • 분류 전체보기
    • 네트워크
    • 기초 셋팅
    • 오늘의 일기
    • 리액트
    • 코테 준비
      • 프로그래머스
      • 백준
    • 코드스테이츠44기 프론트엔드
    • HTML-CSS-JavaScript
      • HTML
      • CSS
      • JavaScript
    • 자료구조&알고리즘
    • TypeScript
    • Git
    • Tip
    • 프로젝트
    • Next.js
    • 트러블슈팅

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코드스테이츠 프론트엔드
  • 코드스테이츠 44기 프론트엔드
  • 리액트쿼리
  • 타입스크립트문법
  • 리액트 상태관리
  • 코드스테이츠
  • 코드스테이츠 44기
  • KPT 회고
  • 자바스크립트
  • BFS
  • 자바스크립트 비동기
  • 리액트
  • 티스토리챌린지
  • 코드스테이츠 회고록
  • 탄스택쿼리
  • 프로그래머스
  • 프로젝트 회고
  • 오블완
  • 코드스테이츠 블로깅
  • 네트워크

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
배트리버
useQuery 사용 시 Error: No QueryClient set, use QueryClientProvider to set one 에러 해결
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.