[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] React에서 key 중복으로 발생한 렌더링 이슈 (Reconciliation 사례)  (1) 2025.05.27
[React] useId()를 사용하다가 삽질한 기록  (4) 2025.05.25
[TypeScript] 고급 타입 활용법: 조건부 타입, 제네릭 심화와 Exclude/Extract 활용  (0) 2025.04.01
[React] 상태 (State)  (0) 2024.02.28
[React] JSX 사용하기  (0) 2024.02.28
'Development/React' 카테고리의 다른 글
  • [React] React에서 key 중복으로 발생한 렌더링 이슈 (Reconciliation 사례)
  • [React] useId()를 사용하다가 삽질한 기록
  • [TypeScript] 고급 타입 활용법: 조건부 타입, 제네릭 심화와 Exclude/Extract 활용
  • [React] 상태 (State)
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Development (57)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (8)
        • MySql (19)
        • MongoDB (1)
      • Daily (4)
      • Study (6)
        • TIL (1)
        • license (3)
  • 블로그 메뉴

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

    • github
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바