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. | |
* /} |
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
// 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
// packages/next/client/router.ts | |
// import Router from 'next/router' νμ λ μ κ·Όνλ κ°. | |
// Export the singletonRouter and this is the public API. | |
export default singletonRouter as SingletonRouter |
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/router.ts | |
// Router μ±κΈν€μ μ μ₯νλ κ°μ²΄ | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/router.ts#L20 | |
const singletonRouter: SingletonRouterBase = { | |
router: null, // holds the actual router instance | |
readyCallbacks: [], | |
ready(cb: () => void) { | |
if (this.router) return cb() | |
if (typeof window !== 'undefined') { |
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 | |
// hydrate ν¨μμμ Router μ±κΈν€μ΄ μ΄κΈ°ν(createRouter)λλ μ½λ νΈμΆ | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/index.tsx#L863 | |
export async function hydrate(opts?: { beforeRender?: () => Promise<void> }) { | |
// ... |
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/with-router.tsx | |
// withRouter μ½λ | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/with-router.tsx#L19 | |
import { useRouter } from './router' | |
export default function withRouter< | |
P extends WithRouterProps, | |
C extends BaseContext = NextPageContext | |
>( |
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/router.ts | |
// useRouter μ½λ | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/router.ts#L132 | |
export function useRouter(): NextRouter { | |
return React.useContext(RouterContext) | |
} |
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.tsx | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/index.tsx | |
// μ΅μ΄ hydrationμ μν΄μ μ¬μ© | |
// λ΄λΆμμ render ν¨μ νΈμΆ | |
// ν¨μ λ΄λΆλ μλ΅ | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/index.tsx#L756 | |
export async function hydrate(opts?: { beforeRender?: () => Promise<void> }) {} |
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/next.js | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/client/next.js#L12 | |
// Next.js client side initialize μ½λ | |
initialize({}) | |
.then(() => hydrate()) | |
.catch(console.error) |
NewerOlder