[React] ReactQuery 순환 참조

2025. 6. 9. 17:57·Development/React
JavaScript 객체 초기화 순서와 const 객체 참조 구조 때문에 생기는 “실행 시점 의존성” 문제

객체 리터럴 내부에서 자기 자신 참조는 시점상 정의 전 참조가 된다.

 

export const pageMngQueryKeys = {
  all: ['pageMng'] as const,
  detail: (id: number) =>
    [...pageMngQueryKeys.all, 'detail', id] as const,
};

여기서 pageMngQueryKeys.detail은 객체 초기화가 아직 끝나지 않은 시점에 pageMngQueryKeys.all을 참조

 

즉, pageMngQueryKeys는 아직 완전히 만들어지지 않았는데 그걸 내부에서 쓰고 있음 → undefined.all → 런타임 에러

 

왜 로컬환경에선 안되고 개발계에선 될까

아마도 아래 이유 중 하나?

Vite 개발 서버 (HMR) 모듈 캐시가 살아있어서 간혹 우연히 동작함
프로덕션 빌드 정적 분석에서 warning 또는 undefined 가능성
Jest 등 테스트 거의 확정적으로 undefined 발생
Node.js ESM 직접 실행 순환 의존으로 함수 호출 시점에 터짐

Vite 모듈 캐시가 살아있어서 그런듯 하다.

 

export const pageMngQueryKeys = {
  ...
  detail: (pageId: number) => ['pageMng', 'detail', pageId] as const,
};

 

기존 담당자가 수정하고 테스트했을 땐 캐시 때문에 정상 동작했던 것 같다.

'Development > React' 카테고리의 다른 글

[React-Query] queryFn에서 언랩(unwrapping) 하는 것과 select 옵션으로 언랩하는 것의 차이  (0) 2025.09.23
[ReactFlow] 이제 reactflow 대신 @xyflow/react  (1) 2025.08.18
[React] React에서 key 중복으로 발생한 렌더링 이슈 (Reconciliation 사례)  (1) 2025.05.27
[React] useId()를 사용하다가 삽질한 기록  (4) 2025.05.25
[TypeScript] 고급 타입 활용법: 조건부 타입, 제네릭 심화와 Exclude/Extract 활용  (0) 2025.04.01
'Development/React' 카테고리의 다른 글
  • [React-Query] queryFn에서 언랩(unwrapping) 하는 것과 select 옵션으로 언랩하는 것의 차이
  • [ReactFlow] 이제 reactflow 대신 @xyflow/react
  • [React] React에서 key 중복으로 발생한 렌더링 이슈 (Reconciliation 사례)
  • [React] useId()를 사용하다가 삽질한 기록
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • Development (66)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (10)
        • MySql (19)
        • MongoDB (1)
      • Daily (5)
      • Study (7)
        • TIL (2)
        • license (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    springboot
    HTML
    크롤링
    react
    php
    chromedriver
    Java
    Selenium
    CentOS
    Python
    윈도우
    IP
    MySQL
    error
    JavaScript
    스프링부트
    Shell
    docker
    정규표현식
    ssh
    리액트
    db
    CentOS7
    UTF8
    nodejs
    date
    인코딩
    SQL
    Linux
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
곽진돔
[React] ReactQuery 순환 참조
상단으로

티스토리툴바