• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

상품목록페이지만들기에서 ... 막힙니다..

23.12.17 15:51 작성 조회수 163

0

선생님~!!

상품목록페이지가 안뜹니다 ㅠㅠ

뭘 잘못한걸까요??

 


app.tsx파일엔 아래와 같이 입력했습니다.

import { QueryClientProvider } from 'react-query'
import { useRoutes } from 'react-router-dom'
import { getClient } from './queryClient'
import { routes } from './routes'
import { ReactQueryDevtools } from 'react-query/devtools'


const App = () => {
    const elem = useRoutes(routes)
    const queryClient = getClient()
    return (
        <QueryClientProvider client={queryClient}>
            {elem}
            <ReactQueryDevtools initialIsOpen={false} />
        </QueryClientProvider>
    )
}
export default App
import { QueryClient } from 'react-query'


// import { getTodos, postTodo } from '../my-api'
type AnyOBJ = { [key: string]: any };


export const getClient = (() => {
    let client: QueryClient | null = null
    return () => {
        if (!client) client = new QueryClient({})
        return client
    }
})()
const BASE_URL = "https://fakestoreapi.com"


export const fetcher = async ({
    method,
    path,
    body,
    params,
}: {
    method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
    path: string;
    body?: AnyOBJ;
    params?: AnyOBJ;
}) => {
    const url = `${BASE_URL}${path}`;
    const fetchOptions: RequestInit = {
        method,
        headers: {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": BASE_URL,
        },
    };
    try {
        const res = await fetch(url, fetchOptions);
        const json = await res.json();
        return json;
    } catch (err) {
        console.error(err);
    }
};

export const QueryKeys = {
    PRODUCTS: "PRODUCTS",
};

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.19

안녕하세요, 인프런 AI 인턴입니다. ksw님, 상품목록페이지가 나타나지 않는 문제가 발생했다니 답답하셨겠어요.

에러 메시지에 따르면 “No QueryClient set, use QueryClientProvider to set one” 이라고 나와 있는데, 이는 QueryClientProvider를 사용하여 QueryClient 인스턴스를 설정해야 한다는 것을 암시합니다. 공유주신 코드를 보면 QueryClientProvider로 감싸진 elem<ReactQueryDevtools> 컴포넌트가 있는데 코드 자체는 문제가 없어 보입니다.

다만, QueryClientProvider 내부의 다른 컴포넌트 또는 useRoutes에서 반환된 elemQueryClient를 필요로 하는데, 해당 컴포넌트에 제대로 전달되지 않았을 가능성이 있습니다.

이를 해결하기 위한 몇 가지 단계를 제안드립니다:

  1. QueryClientProvider 컴포넌트 주변에 ReactQueryDevtools가 함께 온전히 렌더링되고 있는지 확인해보세요.
  2. routes 정의에서 반환되는 컴포넌트들이 QueryClient를 필요로 하는 useQuery 또는 useMutation 호출과 관련있는 경우, 이들 컴포넌트가 정상적으로 QueryClientProvider 아래에 위치하는지 확인하세요.
  3. 에러가 발생하는 구체적인 위치를 파악하기 위해 stack trace를 이용해 발생지점을 확인해보세요. 문제가 되는 특정 파일이나 코드 라인을 찾아서 수정해야 할 수도 있습니다.

이런 방법들로도 문제가 해결되지 않는 경우, 웹 브라우저의 콘솔 또는 네트워크 탭을 확인하면 추가적인 정보를 얻을 수 있습니다.

아래 링크에서 더 다양한 경우의 해결책을 찾을 수도 있으니 참고하시면 좋을 것 같습니다:
- React Query 문서: https://react-query.tanstack.com/
- Stack Overflow 및 개발자 커뮤니티

도움을 드리기 위해 최선을 다할게요, 문제가 잘 해결되기를 바랍니다!