This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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. | |
* /} |
OlderNewer