registerSSR를 사용하여 서버에서 데이터를 미리 로드하고 클라이언트로 전달하는 방법을 알아봅니다.
데이터 프리로딩 개요
registerSSR
라우트별 preload 설정백엔드 직접 호출
SSRQuery
타입 안전한 쿼리모델/메서드 지정
자동 주입
QueryClient에 자동 주입Hydration 처리
No HTTP
네트워크 오버헤드 없음빠른 응답
registerSSR 사용법
기본 구조
- 서버에서
/users/123요청 받음 path매칭:/users/:id→params = { id: "123" }preload함수 실행 →SSRQuery[]반환UserModel.getUser("C", 123)백엔드 직접 호출 (HTTP 없음!)- 결과를
QueryClient.setQueryData(["User", "getUser", "C", 123], result)주입 - HTML + dehydratedState를 클라이언트로 전송
- 클라이언트가 hydrate하여 즉시 데이터 사용
SSRQuery 타입
params는 백엔드 메서드의 파라미터 순서를 따릅니다 (Context 제외).
실전 예제
단일 데이터 로딩
사용자 상세 페이지에서 사용자 정보를 프리로드합니다.여러 데이터 동시 로딩
게시글 상세 페이지에서 게시글과 댓글을 동시에 프리로드합니다.파라미터 가공
URL 파라미터를 가공하여 사용할 수 있습니다.조건부 프리로딩
특정 조건에 따라 다른 데이터를 로드할 수 있습니다.쿼리 키 매칭
프리로드된 데이터가 클라이언트의 useQuery와 매칭되려면 queryKey가 정확히 일치해야 합니다.올바른 매칭
잘못된 매칭
SSRRoute 옵션
disableHydrate
Hydration을 비활성화하고 클라이언트에서 새로 렌더링합니다.- 서버/클라이언트 렌더링 결과가 다를 수 있는 경우
- 실시간 데이터가 중요한 경우
- Hydration mismatch 해결
