Skip to content

Instantly share code, notes, and snippets.

View khg0712's full-sized avatar
🎯
Focusing

Hugo Kim khg0712

🎯
Focusing
View GitHub Profile
// packages/next/client/index.ts
// Router 싱글톤을 저장하는 전역 객체
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/index.tsx#L67
export let router: Router
// AppContainer에서 RouterContext에 Router 싱글톤 주입하는 코드
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/index.tsx#L296
function AppContainer({
children,
// SSR 코드
// packages/next/server/render.tsx
// renderToHTML의 인터페이스는 생략.
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/server/render.tsx#L351
export async function renderToHTML() {
// CSR과 다르게 SSR에선 ServerRouter라는 별개의 class로 Router를 만든다.
// ServerRouter parameter는 생략.
const router = new ServerRouter()
// SSR 시점에 Router 싱글톤에 접근할 때 Next.js page 컴포넌트 예시
import Router from 'next/router'
export default function page() {
return (
<div>
{/* 아래 에러 발생
* Error: No router instance found.
* You should only use "next/router" on the client side of your app.
* /}