From c14a6300b6209592abbb8c36f9333c57d61198d9 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 9 Jul 2023 11:23:10 +0900 Subject: [PATCH 01/26] translation finished --- .../01-routing/03-linking-and-navigating.mdx | 132 ++++++++++-------- 1 file changed, 72 insertions(+), 60 deletions(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 4f0215d20..dcc3c9491 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -1,22 +1,34 @@ --- -title: Linking and Navigating -description: Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook. +title: Linking과 Navigating +description: Next.js에서 네비게이션이 작동하는 방식과 Link Component와 `useRouter` hook을 사용하는 방법을 배워보세요. --- -The Next.js router uses [server-centric routing](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation) with [client-side navigation](#how-navigation-works). It supports [instant loading states](/docs/app/building-your-application/routing/loading-ui-and-streaming) and [concurrent rendering](https://react.dev/reference/react/startTransition). This means navigation maintains client-side state, avoids expensive re-renders, is interruptible, and doesn't cause race conditions. +Next.js 라우터는 [클라이언트 사이드 네비게이션](#how-navigation-works)을 사용하는 [서버 중심 라우팅](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation)을 사용합니다. 이는 네비게이션이 클라이언트 사이드 상태를 유지하고 값비싼 재렌더링을 피하며, 중단 가능하며, 경쟁 상태를 발생시키지 않는다는 것을 의미합니다. -There are two ways to navigate between routes: +라우트 사이를 이동하는 방법에는 두 가지가 있습니다. -- [`` Component](#link-component) -- [`useRouter` Hook](#userouter-hook) +- [`` 컴포넌트](#link-컴포넌트) +- [예시](#예시) + - [동적 세그먼트에 링크 걸기](#동적-세그먼트에-링크-걸기) + - [활성 링크 확인하기](#활성-링크-확인하기) + - [`id`로 스크롤하기](#id로-스크롤하기) +- [`useRouter()` 훅](#userouter-훅) +- [네비게이션의 작동 방식](#네비게이션의-작동-방식) + - [렌더링된 서버 컴포넌트의 클라이언트 측 캐시](#렌더링된-서버-컴포넌트의-클라이언트-측-캐시) + - [캐시 무효화하기](#캐시-무효화하기) + - [Prefetching](#prefetching) + - [소프트 네비게이션](#소프트-네비게이션) + - [소프트 네비게이션의 조건](#소프트-네비게이션의-조건) + - [하드 네비게이션](#하드-네비게이션) + - [뒤로 가기/앞으로 가기 네비게이션](#뒤로-가기앞으로-가기-네비게이션) + - [포커스와 스크롤 관리](#포커스와-스크롤-관리) -This page will go through how to use ``, `useRouter()`, and dive deeper into how navigation works. +이 페이지에서는 ``, `useRouter()`를 사용하는 방법과 네비게이션이 작동하는 방식에 대해 자세히 알아보겠습니다. +## `` 컴포넌트 -## `` Component +``는 [prefetching](#prefetching) 그리고 라우트 사이의 클라이언트 사이드 네비게이션을 제공하는 HTML `` element를 확장한 React 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. -`` is a React component that extends the HTML `` element to provide [prefetching](#prefetching) and client-side navigation between routes. It is the primary way to navigate between routes in Next.js. - -To use ``, import it from `next/link`, and pass a `href` prop to the component: +``를 사용하려면 `next/link`를 import하고, `href` prop을 컴포넌트에 전달하세요: ```tsx filename="app/page.tsx" switcher import Link from 'next/link' @@ -34,13 +46,13 @@ export default function Page() { } ``` -There are optional props you can pass to ``. See the [API reference](/docs/app/api-reference/components/link) for more information. +``에 전달할 수 있는 옵션 prop들이 있습니다. 더 많은 정보는 [API reference](/docs/app/api-reference/components/link)를 참고하세요. -## Examples +## 예시 -### Linking to Dynamic Segments +### 동적 세그먼트에 링크 걸기 -When linking to [dynamic segments](/docs/app/building-your-application/routing/dynamic-routes), you can use [template literals and interpolation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) to generate a list of links. For example, to generate a list of blog posts: +[동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)에 링크를 걸 때, [템플릿 리터럴과 보간](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)을 사용하여 링크 목록을 생성할 수 있습니다. 예를 들어, 블로그 포스트 목록을 생성하려면: ```jsx filename="app/blog/PostList.js" import Link from 'next/link' @@ -58,9 +70,9 @@ export default function PostList({ posts }) { } ``` -### Checking Active Links +### 활성 링크 확인하기 -You can use [`usePathname()`](/docs/app/api-reference/functions/use-pathname) to determine if a link is active. For example, to add a class to the active link, you can check if the current `pathname` matches the `href` of the link: +링크가 활성화되어 있는지 확인하기 위해 [`usePathname()`](/docs/app/api-reference/functions/use-pathname)을 사용할 수 있습니다. 예를 들어, 현재 `pathname`이 링크의 `href`와 일치하는지 확인하여 활성 링크에 클래스를 추가할 수 있습니다: ```jsx filename="app/ui/Navigation.js" 'use client' @@ -91,11 +103,11 @@ export function Navigation({ navLinks }) { } ``` -### Scrolling to an `id` +### `id`로 스크롤하기 -The default behavior of `` is to [scroll to the top of the route segment that has changed](#focus-and-scroll-management). When there is an `id` defined in `href`, it will scroll to the specific `id`, similarly to a normal `` tag. +``의 기본 동작은 [변경된 라우트 세그먼트의 맨 위로 스크롤](#focus-and-scroll-management)하는 것입니다. `href`에 `id`가 정의되어 있으면, 일반 `` 태그와 비슷하게 특정 `id`로 스크롤합니다. -To prevent scrolling to the top of the route segment, set `scroll={false}` and add a hashed `id` to `href`: +라우트 세그먼트의 맨 위로 스크롤하는 것을 방지하려면 `scroll={false}`를 설정하고 `href`에 해시된 `id`를 추가하세요. ```jsx @@ -103,11 +115,12 @@ To prevent scrolling to the top of the route segment, set `scroll={false}` and a ``` -## `useRouter()` Hook +## `useRouter()` 훅 -The `useRouter` hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). +The hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). +`useRouter` 훅은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 해줍니다. -To use `useRouter`, import it from `next/navigation`, and call the hook inside your Client Component: +`useRouter`를 사용하려면 `next/navigation`에서 import하고, 클라이언트 컴포넌트 내부에서 훅을 호출하세요: ```jsx filename="app/page.js" 'use client' @@ -125,70 +138,69 @@ export default function Page() { } ``` -The `useRouter` provides methods such as `push()`, `refresh()`, and more. See the [API reference](/docs/app/api-reference/functions/use-router) for more information. +`useRouter`는 `push()`, `refresh()` 등의 메서드를 제공합니다. 더 많은 정보는 [API 레퍼런스](/docs/app/api-reference/functions/use-router)를 참고하세요. -> **Recommendation:** Use the `` component to navigate between routes unless you have a specific requirement for using `useRouter`. +> **추천:** `useRouter`를 사용하라는 특별한 요구사항이 없는 한, 라우트 간에 이동할 때 `` 컴포넌트를 사용하는 것이 좋습니다. -## How Navigation Works +## 네비게이션의 작동 방식 -- A route transition is initiated using `` or calling `router.push()`. -- The router updates the URL in the browser's address bar. -- The router avoids unnecessary work by re-using segments that haven't changed (e.g. shared layouts) from the [client-side cache](#client-side-caching-of-rendered-server-components). This is also referred to as [partial rendering](/docs/app/building-your-application/routing#partial-rendering). -- If the [conditions of soft navigation](#conditions-for-soft-navigation) are met, the router fetches the new segment from the cache rather than the server. If not, the router performs a [hard navigation](#hard-navigation) and fetches the Server Component payload from the server. +- 라우트 전환은 ``를 사용하거나 `router.push()`를 호출하여 시작됩니다. +- 라우터는 브라우저의 주소 표시줄에 URL을 업데이트합니다. +- 라우터는 [클라이언트 측 캐시](#client-side-caching-of-rendered-server-components)에서 변경되지 않은 세그먼트(예: 공유된 레이아웃)를 재사용하여 불필요한 작업을 피합니다. 이것은 [부분 렌더링](/docs/app/building-your-application/routing#partial-rendering)이라고도 합니다. +- 만약 [소프트 네비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면, 라우터는 [하드 네비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. - If created, [loading UI](/docs/app/building-your-application/routing/loading-ui-and-streaming) is shown from the server while the payload is being fetched. -- The router uses the cached or fresh payload to render the new segments on the client. +- 생성된 경우, [로딩 UI](/docs/app/building-your-application/routing/loading-ui-and-streaming)는 페이로드가 fetched되는 동안 서버로부터 표시됩니다. +- 라우터는 캐시된 또는 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링합니다. -### Client-side Caching of Rendered Server Components +### 렌더링된 서버 컴포넌트의 클라이언트 측 캐시 -> **Good to know**: This client-side cache is different from the server-side [Next.js HTTP cache](/docs/app/building-your-application/data-fetching#caching-data). +> **알아두면 좋은 것:** 이 클라이언트 측 캐시는 서버 측 [Next.js HTTP 캐시](/docs/app/building-your-application/data-fetching#caching-data)와 다릅니다. -The new router has an **in-memory client-side cache** that stores the **rendered result** of Server Components (payload). The cache is split by route segments which allows invalidation at any level and ensures consistency across concurrent renders. +새로운 라우터는 서버 컴포넌트의 **렌더링된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효화할 수 있으며, 동시 렌더링 간 일관성을 보장합니다. -As users navigate around the app, the router will store the payload of previously fetched segments **and** [prefetched](#prefetching) segments in the cache. +유저가 앱 내에서 이동을 하면, 라우터는 이전에 fetched된 세그먼트의 페이로드 **그리고** [prefetch된](#prefetching) 세그먼트를 캐시에 저장합니다. -This means, for certain cases, the router can re-use the cache instead of making a new request to the server. This improves performance by avoiding re-fetching data and re-rendering components unnecessarily. +이는, 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링하는 것을 피함으로써 성능을 향상시킵니다. -### Invalidating the Cache +### 캐시 무효화하기 -[Server Actions](/docs/app/building-your-application/data-fetching/server-actions) can be used to revalidate data on-demand by path ([`revalidatePath`](/docs/app/api-reference/functions/revalidatePath)) or by cache tag ([`revalidateTag`](/docs/app/api-reference/functions/revalidateTag)). +[서버 액션](/docs/app/building-your-application/data-fetching/server-actions)은 경로([`revalidatePath`](/docs/app/api-reference/functions/revalidatePath)) 또는 캐시 태그([`revalidateTag`](/docs/app/api-reference/functions/revalidateTag))로 데이터를 필요에 따라 다시 유효성 검사하는 데 사용될 수 있습니다. ### Prefetching -Prefetching is a way to preload a route in the background before it's visited. The rendered result of prefetched routes is added to the router's client-side cache. This makes navigating to a prefetched route near-instant. +Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트를 미리 로드하는 방법입니다. prefetch된 라우트의 렌더링 결과는 라우터의 클라이언트 측 캐시에 추가됩니다. 이렇게 하면 prefetch된 라우트로 이동하는 것이 거의 즉시 가능합니다. -By default, routes are prefetched as they become visible in the viewport when using the `` component. This can happen when the page first loads or through scrolling. Routes can also be programmatically prefetched using the `prefetch` method of the [`useRouter()` hook](/docs/app/api-reference/functions/use-router#userouter). +기본적으로 `` 컴포넌트를 사용할 때 라우트가 뷰포트에 표시되면 prefetch됩니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` 훅](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 prefetch될 수도 있습니다. -**Static and Dynamic Routes**: +**정적 및 동적 라우트**: -- If the route is static, all the Server Component payloads for the route segments will be prefetched. -- If the route is dynamic, the payload from the first shared layout down until the first `loading.js` file is prefetched. This reduces the cost of prefetching the whole route dynamically and allows [instant loading states](/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states) for dynamic routes. +- 라우트가 정적이면, 라우트 세그먼트의 모든 서버 컴포넌트 페이로드가 prefetch됩니다. +- 라우트가 동적이면, 첫 번째 공유 레이아웃에서 첫 번째 `loading.js` 파일까지의 페이로드가 prefetch됩니다. 이렇게 하면 라우트 전체를 동적으로 prefetch하는 비용이 줄어들며, 동적 라우트에 대한 [즉시 로딩 상태](/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states)를 허용합니다. -> **Good to know**: +> **알아두면 좋은 것**: > -> - Prefetching is only enabled in production. -> - Prefetching can be disabled by passing `prefetch={false}` to ``. - -### Soft Navigation +> - Prefetching은 프로덕션에서만 활성화됩니다. +> - Prefetching은 ``에 `prefetch={false}`를 전달하여 비활성화할 수 있습니다. -On navigation, the cache for changed segments is reused (if it exists), and no new requests are made to the server for data. +### 소프트 네비게이션 -#### Conditions for Soft Navigation +네비게이션 시, 변경된 세그먼트의 캐시가 재사용되며, 데이터를 위해 서버에 새로운 요청이 전송되지 않습니다. -On navigation, Next.js will use soft navigation if the route you are navigating to has been [**prefetched**](#prefetching), and either doesn't include [dynamic segments](/docs/app/building-your-application/routing/dynamic-routes) **or** has the same dynamic parameters as the current route. +### 소프트 네비게이션의 조건 -For example, consider the following route that includes a dynamic `[team]` segment: `/dashboard/[team]/*`. The cached segments below `/dashboard/[team]/*` will only be invalidated when the `[team]` parameter changes. +네비게이션 시, Next.js는 네비게이션할 라우트가 [**prefetched**](#prefetching)되었고, [동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)를 포함하지 않**거나** 현재 라우트와 동일한 동적 파라미터를 가지고 있으면 소프트 네비게이션을 사용합니다. -- Navigating from `/dashboard/team-red/*` to `/dashboard/team-red/*` will be a soft navigation. -- Navigating from `/dashboard/team-red/*` to `/dashboard/team-blue/*` will be a hard navigation. +- `/dashboard/team-red/*`에서 `/dashboard/team-red/*`로 네비게이션될 때는 소프트 네비게이션을 사용합니다. +- `/dashboard/team-red/*`에서 `/dashboard/team-blue/*`로 네비게이션될 때는 하드 네비게이션을 사용합니다. -### Hard Navigation +### 하드 네비게이션 -On navigation, the cache is invalidated and the server refetches data and re-renders the changed segments. +네비게이션 시 캐시가 무효화되고 서버가 데이터를 다시 가져오고 변경된 세그먼트를 다시 렌더링합니다. -### Back/Forward Navigation +### 뒤로 가기/앞으로 가기 네비게이션 -Back and forward navigation ([popstate event](https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event)) has a soft navigation behavior. This means, the client-side cache is re-used and navigation is near-instant. +뒤로 가기/앞으로 가기 네비게이션([popstate event](https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event))은 소프트 네비게이션 동작을 가집니다. 이는 클라이언트 측 캐시가 재사용되고 네비게이션이 거의 즉시 진행된다는 것을 의미합니다. -### Focus and Scroll Management +### 포커스와 스크롤 관리 -By default, Next.js will set focus and scroll into view the segment that's changed on navigation. +기본적으로 Next.js는 라우트 변경 시 변경된 세그먼트에 포커스를 설정하고 스크롤을 뷰에 맞춥니다. From db1cd819bfe9057909a31eff1d73ff25fa251dd4 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 9 Jul 2023 15:08:30 +0900 Subject: [PATCH 02/26] typo fix --- .../01-routing/03-linking-and-navigating.mdx | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index dcc3c9491..4db4a1b18 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -1,9 +1,9 @@ --- title: Linking과 Navigating -description: Next.js에서 네비게이션이 작동하는 방식과 Link Component와 `useRouter` hook을 사용하는 방법을 배워보세요. +description: Next.js에서 내비게이션이 작동하는 방식과 Link Component와 `useRouter` hook을 사용하는 방법을 배워보세요. --- -Next.js 라우터는 [클라이언트 사이드 네비게이션](#how-navigation-works)을 사용하는 [서버 중심 라우팅](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation)을 사용합니다. 이는 네비게이션이 클라이언트 사이드 상태를 유지하고 값비싼 재렌더링을 피하며, 중단 가능하며, 경쟁 상태를 발생시키지 않는다는 것을 의미합니다. +Next.js 라우터는 [클라이언트 사이드 내비게이션](#how-navigation-works)을 사용하는 [서버 중심 라우팅](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation)을 사용합니다. 이는 내비게이션이 클라이언트 사이드 상태를 유지하고 값비싼 재렌더링을 피하며, 중단할 수 있으며, 경쟁 상태를 발생시키지 않는다는 것을 의미합니다. 라우트 사이를 이동하는 방법에는 두 가지가 있습니다. @@ -12,23 +12,23 @@ Next.js 라우터는 [클라이언트 사이드 네비게이션](#how-navigation - [동적 세그먼트에 링크 걸기](#동적-세그먼트에-링크-걸기) - [활성 링크 확인하기](#활성-링크-확인하기) - [`id`로 스크롤하기](#id로-스크롤하기) -- [`useRouter()` 훅](#userouter-훅) -- [네비게이션의 작동 방식](#네비게이션의-작동-방식) - - [렌더링된 서버 컴포넌트의 클라이언트 측 캐시](#렌더링된-서버-컴포넌트의-클라이언트-측-캐시) - - [캐시 무효화하기](#캐시-무효화하기) +- [`useRouter()` Hook](#userouter-hook) +- [내비게이션의 작동 방식](#내비게이션의-작동-방식) + - [렌더링 된 서버 컴포넌트의 클라이언트 측 캐시](#렌더링-된-서버-컴포넌트의-클라이언트-측-캐시) + - [캐시 무효로 하기](#캐시-무효로-하기) - [Prefetching](#prefetching) - - [소프트 네비게이션](#소프트-네비게이션) - - [소프트 네비게이션의 조건](#소프트-네비게이션의-조건) - - [하드 네비게이션](#하드-네비게이션) - - [뒤로 가기/앞으로 가기 네비게이션](#뒤로-가기앞으로-가기-네비게이션) + - [소프트 내비게이션](#소프트-내비게이션) + - [소프트 내비게이션의 조건](#소프트-내비게이션의-조건) + - [하드 내비게이션](#하드-내비게이션) + - [뒤로 가기/앞으로 가기 내비게이션](#뒤로-가기앞으로-가기-내비게이션) - [포커스와 스크롤 관리](#포커스와-스크롤-관리) -이 페이지에서는 ``, `useRouter()`를 사용하는 방법과 네비게이션이 작동하는 방식에 대해 자세히 알아보겠습니다. +이 페이지에서는 ``, `useRouter()`를 사용하는 방법과 내비게이션이 작동하는 방식에 대해 자세히 알아보겠습니다. ## `` 컴포넌트 -``는 [prefetching](#prefetching) 그리고 라우트 사이의 클라이언트 사이드 네비게이션을 제공하는 HTML `` element를 확장한 React 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. +``는 [prefetching](#prefetching) 그리고 라우트 사이의 클라이언트 사이드 내비게이션을 제공하는 HTML `` element를 확장한 React 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. -``를 사용하려면 `next/link`를 import하고, `href` prop을 컴포넌트에 전달하세요: +``를 사용하려면 `next/link`를 import하고, `href` props를 컴포넌트에 전달하세요: ```tsx filename="app/page.tsx" switcher import Link from 'next/link' @@ -46,7 +46,7 @@ export default function Page() { } ``` -``에 전달할 수 있는 옵션 prop들이 있습니다. 더 많은 정보는 [API reference](/docs/app/api-reference/components/link)를 참고하세요. +``에 전달할 수 있는 옵션 props가 있습니다. 더 많은 정보는 [API 레퍼런스](/docs/app/api-reference/components/link)를 참고하세요. ## 예시 @@ -115,12 +115,12 @@ export function Navigation({ navLinks }) { ``` -## `useRouter()` 훅 +## `useRouter()` Hook The hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). -`useRouter` 훅은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 해줍니다. +`useRouter` Hook은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 해줍니다. -`useRouter`를 사용하려면 `next/navigation`에서 import하고, 클라이언트 컴포넌트 내부에서 훅을 호출하세요: +`useRouter`를 사용하려면 `next/navigation`에서 import하고, 클라이언트 컴포넌트 내부에서 Hook을 호출하세요: ```jsx filename="app/page.js" 'use client' @@ -142,27 +142,27 @@ export default function Page() { > **추천:** `useRouter`를 사용하라는 특별한 요구사항이 없는 한, 라우트 간에 이동할 때 `` 컴포넌트를 사용하는 것이 좋습니다. -## 네비게이션의 작동 방식 +## 내비게이션의 작동 방식 - 라우트 전환은 ``를 사용하거나 `router.push()`를 호출하여 시작됩니다. - 라우터는 브라우저의 주소 표시줄에 URL을 업데이트합니다. - 라우터는 [클라이언트 측 캐시](#client-side-caching-of-rendered-server-components)에서 변경되지 않은 세그먼트(예: 공유된 레이아웃)를 재사용하여 불필요한 작업을 피합니다. 이것은 [부분 렌더링](/docs/app/building-your-application/routing#partial-rendering)이라고도 합니다. -- 만약 [소프트 네비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면, 라우터는 [하드 네비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. +- 만약 [소프트 내비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면, 라우터는 [하드 내비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. - If created, [loading UI](/docs/app/building-your-application/routing/loading-ui-and-streaming) is shown from the server while the payload is being fetched. - 생성된 경우, [로딩 UI](/docs/app/building-your-application/routing/loading-ui-and-streaming)는 페이로드가 fetched되는 동안 서버로부터 표시됩니다. -- 라우터는 캐시된 또는 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링합니다. +- 라우터는 캐시된 또는 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링 합니다. -### 렌더링된 서버 컴포넌트의 클라이언트 측 캐시 +### 렌더링 된 서버 컴포넌트의 클라이언트 측 캐시 > **알아두면 좋은 것:** 이 클라이언트 측 캐시는 서버 측 [Next.js HTTP 캐시](/docs/app/building-your-application/data-fetching#caching-data)와 다릅니다. -새로운 라우터는 서버 컴포넌트의 **렌더링된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효화할 수 있으며, 동시 렌더링 간 일관성을 보장합니다. +새로운 라우터는 서버 컴포넌트의 **렌더링 된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효로 될 수 있으며, 동시 렌더링 간 일관성을 보장합니다. 유저가 앱 내에서 이동을 하면, 라우터는 이전에 fetched된 세그먼트의 페이로드 **그리고** [prefetch된](#prefetching) 세그먼트를 캐시에 저장합니다. -이는, 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링하는 것을 피함으로써 성능을 향상시킵니다. +이는, 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링 하는 것을 피함으로써 성능을 향상시킵니다. -### 캐시 무효화하기 +### 캐시 무효로 하기 [서버 액션](/docs/app/building-your-application/data-fetching/server-actions)은 경로([`revalidatePath`](/docs/app/api-reference/functions/revalidatePath)) 또는 캐시 태그([`revalidateTag`](/docs/app/api-reference/functions/revalidateTag))로 데이터를 필요에 따라 다시 유효성 검사하는 데 사용될 수 있습니다. @@ -170,7 +170,7 @@ export default function Page() { Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트를 미리 로드하는 방법입니다. prefetch된 라우트의 렌더링 결과는 라우터의 클라이언트 측 캐시에 추가됩니다. 이렇게 하면 prefetch된 라우트로 이동하는 것이 거의 즉시 가능합니다. -기본적으로 `` 컴포넌트를 사용할 때 라우트가 뷰포트에 표시되면 prefetch됩니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` 훅](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 prefetch될 수도 있습니다. +기본적으로 `` 컴포넌트를 사용할 때 라우트가 뷰포트에 표시되면 prefetch됩니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` Hook](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 prefetch될 수도 있습니다. **정적 및 동적 라우트**: @@ -182,24 +182,24 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 > - Prefetching은 프로덕션에서만 활성화됩니다. > - Prefetching은 ``에 `prefetch={false}`를 전달하여 비활성화할 수 있습니다. -### 소프트 네비게이션 +### 소프트 내비게이션 -네비게이션 시, 변경된 세그먼트의 캐시가 재사용되며, 데이터를 위해 서버에 새로운 요청이 전송되지 않습니다. +내비게이션 시, 변경된 세그먼트의 캐시가 재사용되며, 데이터를 위해 서버에 새로운 요청이 전송되지 않습니다. -### 소프트 네비게이션의 조건 +### 소프트 내비게이션의 조건 -네비게이션 시, Next.js는 네비게이션할 라우트가 [**prefetched**](#prefetching)되었고, [동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)를 포함하지 않**거나** 현재 라우트와 동일한 동적 파라미터를 가지고 있으면 소프트 네비게이션을 사용합니다. +내비게이션 시, Next.js는 내비게이션할 라우트가 [**prefetched**](#prefetching)되었고, [동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)를 포함하지 않**거나** 현재 라우트와 동일한 동적 파라미터를 가지고 있으면 소프트 내비게이션을 사용합니다. -- `/dashboard/team-red/*`에서 `/dashboard/team-red/*`로 네비게이션될 때는 소프트 네비게이션을 사용합니다. -- `/dashboard/team-red/*`에서 `/dashboard/team-blue/*`로 네비게이션될 때는 하드 네비게이션을 사용합니다. +- `/dashboard/team-red/*`에서 `/dashboard/team-red/*`로 내비게이션될 때는 소프트 내비게이션을 사용합니다. +- `/dashboard/team-red/*`에서 `/dashboard/team-blue/*`로 내비게이션될 때는 하드 내비게이션을 사용합니다. -### 하드 네비게이션 +### 하드 내비게이션 -네비게이션 시 캐시가 무효화되고 서버가 데이터를 다시 가져오고 변경된 세그먼트를 다시 렌더링합니다. +내비게이션 시 캐시가 무효로 되고 서버가 데이터를 다시 가져오고 변경된 세그먼트를 다시 렌더링 합니다. -### 뒤로 가기/앞으로 가기 네비게이션 +### 뒤로 가기/앞으로 가기 내비게이션 -뒤로 가기/앞으로 가기 네비게이션([popstate event](https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event))은 소프트 네비게이션 동작을 가집니다. 이는 클라이언트 측 캐시가 재사용되고 네비게이션이 거의 즉시 진행된다는 것을 의미합니다. +뒤로 가기/앞으로 가기 내비게이션([popstate event](https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event))은 소프트 내비게이션 동작을 가집니다. 이는 클라이언트 측 캐시가 재사용되고 내비게이션이 거의 즉시 진행된다는 것을 의미합니다. ### 포커스와 스크롤 관리 From e9ce7083c29719256cf1fe5b1d45bbadfd095282 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:35:00 +0900 Subject: [PATCH 03/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 4db4a1b18..2681b6da5 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -3,7 +3,7 @@ title: Linking과 Navigating description: Next.js에서 내비게이션이 작동하는 방식과 Link Component와 `useRouter` hook을 사용하는 방법을 배워보세요. --- -Next.js 라우터는 [클라이언트 사이드 내비게이션](#how-navigation-works)을 사용하는 [서버 중심 라우팅](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation)을 사용합니다. 이는 내비게이션이 클라이언트 사이드 상태를 유지하고 값비싼 재렌더링을 피하며, 중단할 수 있으며, 경쟁 상태를 발생시키지 않는다는 것을 의미합니다. +Next.js 라우터는 [서버 중심 라우팅](/docs/app/building-your-application/routing#server-centric-routing-with-client-side-navigation)과 [클라이언트 사이드 내비게이션](#how-navigation-works)을 사용합니다. 이는 [즉각적인 로딩 상태](/docs/app/building-your-application/routing/loading-ui-and-streaming)와 [동시 렌더링](https://react.dev/reference/react/startTransition)을 지원합니다. 즉, 내비게이션은 클라이언트 측 상태를 유지하고 비용이 많이 드는 리렌더링을 피하고 중단 가능하며 경쟁 상태를 일으키지 않습니다. 라우트 사이를 이동하는 방법에는 두 가지가 있습니다. From da3373ecb9fe5c4ebd0a3bf43f2134cea6c89df0 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:35:31 +0900 Subject: [PATCH 04/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 2681b6da5..c4d966525 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -24,6 +24,7 @@ Next.js 라우터는 [서버 중심 라우팅](/docs/app/building-your-applicati - [포커스와 스크롤 관리](#포커스와-스크롤-관리) 이 페이지에서는 ``, `useRouter()`를 사용하는 방법과 내비게이션이 작동하는 방식에 대해 자세히 알아보겠습니다. + ## `` 컴포넌트 ``는 [prefetching](#prefetching) 그리고 라우트 사이의 클라이언트 사이드 내비게이션을 제공하는 HTML `` element를 확장한 React 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. From ef2c8b7bc26900eea3f384ef644aa000d1f6dd7e Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:35:52 +0900 Subject: [PATCH 05/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index c4d966525..e58869919 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -27,7 +27,7 @@ Next.js 라우터는 [서버 중심 라우팅](/docs/app/building-your-applicati ## `` 컴포넌트 -``는 [prefetching](#prefetching) 그리고 라우트 사이의 클라이언트 사이드 내비게이션을 제공하는 HTML `` element를 확장한 React 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. +``는 HTML `` 엘리먼트를 확장하여 [prefetching](#prefetching)과 라우트 사이의 클라이언트 측 네비게이션을 제공하는 리액트 컴포넌트입니다. Next.js에서 라우트 사이를 이동하는 주요한 방법입니다. ``를 사용하려면 `next/link`를 import하고, `href` props를 컴포넌트에 전달하세요: From bc71544b3afe61d7562eda333e9b4135a0470051 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:35:59 +0900 Subject: [PATCH 06/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index e58869919..0d264869e 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -47,7 +47,7 @@ export default function Page() { } ``` -``에 전달할 수 있는 옵션 props가 있습니다. 더 많은 정보는 [API 레퍼런스](/docs/app/api-reference/components/link)를 참고하세요. +``에 전달할 수 있는 선택적 props가 있습니다. 더 많은 정보는 [API 레퍼런스](/docs/app/api-reference/components/link)를 참고하세요. ## 예시 From 27ada8ab9fc630a92d4351eec7123544de65c9be Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:36:07 +0900 Subject: [PATCH 07/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 0d264869e..f9363fbf7 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -196,7 +196,7 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 ### 하드 내비게이션 -내비게이션 시 캐시가 무효로 되고 서버가 데이터를 다시 가져오고 변경된 세그먼트를 다시 렌더링 합니다. +내비게이션을 할 때 캐시가 무효로 되고 서버가 데이터를 다시 가져오고 변경된 세그먼트를 다시 렌더링 합니다. ### 뒤로 가기/앞으로 가기 내비게이션 From 80d00e8c76d58ea495c51f138b7222d767d340dc Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:36:21 +0900 Subject: [PATCH 08/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index f9363fbf7..fe1432764 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -189,7 +189,7 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 ### 소프트 내비게이션의 조건 -내비게이션 시, Next.js는 내비게이션할 라우트가 [**prefetched**](#prefetching)되었고, [동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)를 포함하지 않**거나** 현재 라우트와 동일한 동적 파라미터를 가지고 있으면 소프트 내비게이션을 사용합니다. +내비게이션을 할 때 Next.js는 내비게이션할 라우트가 [**prefetched**](#prefetching)되었고, [동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)를 포함하지 않**거나** 현재 라우트와 동일한 동적 파라미터를 가지고 있으면 소프트 내비게이션을 사용합니다. - `/dashboard/team-red/*`에서 `/dashboard/team-red/*`로 내비게이션될 때는 소프트 내비게이션을 사용합니다. - `/dashboard/team-red/*`에서 `/dashboard/team-blue/*`로 내비게이션될 때는 하드 내비게이션을 사용합니다. From a2ec23451add8044a8ca71a535f292c557124d5a Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:36:29 +0900 Subject: [PATCH 09/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index fe1432764..c0a410428 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -185,7 +185,7 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 ### 소프트 내비게이션 -내비게이션 시, 변경된 세그먼트의 캐시가 재사용되며, 데이터를 위해 서버에 새로운 요청이 전송되지 않습니다. +내비게이션을 할 때 변경된 세그먼트의 캐시가 재사용되며 데이터를 위해 서버에 새로운 요청이 전송되지 않습니다. ### 소프트 내비게이션의 조건 From 3758a03ce3bc04bb43c9f69dd4d127e2745aed24 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:37:09 +0900 Subject: [PATCH 10/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index c0a410428..575e7524c 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -171,7 +171,7 @@ export default function Page() { Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트를 미리 로드하는 방법입니다. prefetch된 라우트의 렌더링 결과는 라우터의 클라이언트 측 캐시에 추가됩니다. 이렇게 하면 prefetch된 라우트로 이동하는 것이 거의 즉시 가능합니다. -기본적으로 `` 컴포넌트를 사용할 때 라우트가 뷰포트에 표시되면 prefetch됩니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` Hook](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 prefetch될 수도 있습니다. +기본적으로 `` 컴포넌트를 사용할 때 라우트는 뷰포트에 표시되자마자 미리 가져옵니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` hook](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 미리 가져올 수 있습니다. **정적 및 동적 라우트**: From a68760882070aeda4ad269ecacdea51c368086ce Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:37:35 +0900 Subject: [PATCH 11/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 575e7524c..924780cdd 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -169,7 +169,7 @@ export default function Page() { ### Prefetching -Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트를 미리 로드하는 방법입니다. prefetch된 라우트의 렌더링 결과는 라우터의 클라이언트 측 캐시에 추가됩니다. 이렇게 하면 prefetch된 라우트로 이동하는 것이 거의 즉시 가능합니다. +Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트를 미리 로드하는 방법입니다. 미리 가져온 라우트의 렌더링 결과는 라우터의 클라이언트 측 캐시에 추가됩니다. 이렇게 하면 미리 가져온 라우트로 이동하는 것이 거의 즉시 가능합니다. 기본적으로 `` 컴포넌트를 사용할 때 라우트는 뷰포트에 표시되자마자 미리 가져옵니다. 이는 페이지가 처음 로드되거나 스크롤을 통해 발생할 수 있습니다. 라우트는 [`useRouter()` hook](/docs/app/api-reference/functions/use-router#userouter)의 `prefetch` 메서드를 사용하여 프로그래밍 방식으로 미리 가져올 수 있습니다. From e6bd519f104edde155dc0957c77283e61be95370 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:37:57 +0900 Subject: [PATCH 12/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 924780cdd..e26bc2374 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -53,7 +53,7 @@ export default function Page() { ### 동적 세그먼트에 링크 걸기 -[동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)에 링크를 걸 때, [템플릿 리터럴과 보간](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)을 사용하여 링크 목록을 생성할 수 있습니다. 예를 들어, 블로그 포스트 목록을 생성하려면: +[동적 세그먼트](/docs/app/building-your-application/routing/dynamic-routes)에 링크를 걸 때, [템플릿 리터럴과 삽입법](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Template_literals)을 사용하여 링크 목록을 생성할 수 있습니다. 예를 들어, 블로그 포스트 목록을 생성하려면: ```jsx filename="app/blog/PostList.js" import Link from 'next/link' From 4e46f66642ee72e51b53fb64a864b3f43d2cecfe Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:38:15 +0900 Subject: [PATCH 13/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index e26bc2374..4dca9e4a9 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -119,7 +119,7 @@ export function Navigation({ navLinks }) { ## `useRouter()` Hook The hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). -`useRouter` Hook은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 해줍니다. +`useRouter` hook은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 합니다. `useRouter`를 사용하려면 `next/navigation`에서 import하고, 클라이언트 컴포넌트 내부에서 Hook을 호출하세요: From df7331b66ca89ba470b90940043bbc5c43a87232 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:38:35 +0900 Subject: [PATCH 14/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 4dca9e4a9..6ddd547b4 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -73,7 +73,7 @@ export default function PostList({ posts }) { ### 활성 링크 확인하기 -링크가 활성화되어 있는지 확인하기 위해 [`usePathname()`](/docs/app/api-reference/functions/use-pathname)을 사용할 수 있습니다. 예를 들어, 현재 `pathname`이 링크의 `href`와 일치하는지 확인하여 활성 링크에 클래스를 추가할 수 있습니다: +링크가 활성화되어 있는지 확인하기 위해 [`usePathname()`](/docs/app/api-reference/functions/use-pathname)을 사용할 수 있습니다. 예를 들어 현재 `pathname`이 링크의 `href`와 일치하는지 확인하여 활성 링크에 클래스를 추가할 수 있습니다: ```jsx filename="app/ui/Navigation.js" 'use client' From 8d9462c4ef1a5cbfcb4c39f2673118b2ffc32204 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:38:54 +0900 Subject: [PATCH 15/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 6ddd547b4..4467d09c7 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -121,7 +121,7 @@ export function Navigation({ navLinks }) { The hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). `useRouter` hook은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 합니다. -`useRouter`를 사용하려면 `next/navigation`에서 import하고, 클라이언트 컴포넌트 내부에서 Hook을 호출하세요: +`useRouter`를 사용하려면 `next/navigation`에서 import하고 클라이언트 컴포넌트 내부에서 Hook을 호출하세요: ```jsx filename="app/page.js" 'use client' From 2a14f322210b98a619153ca0e3c1f1f6e92c1a68 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:39:15 +0900 Subject: [PATCH 16/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 4467d09c7..3543abb08 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -157,7 +157,7 @@ export default function Page() { > **알아두면 좋은 것:** 이 클라이언트 측 캐시는 서버 측 [Next.js HTTP 캐시](/docs/app/building-your-application/data-fetching#caching-data)와 다릅니다. -새로운 라우터는 서버 컴포넌트의 **렌더링 된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효로 될 수 있으며, 동시 렌더링 간 일관성을 보장합니다. +새로운 라우터는 서버 컴포넌트의 **렌더링 된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효화 할 수 있으며, 동시 렌더링 간 일관성을 보장합니다. 유저가 앱 내에서 이동을 하면, 라우터는 이전에 fetched된 세그먼트의 페이로드 **그리고** [prefetch된](#prefetching) 세그먼트를 캐시에 저장합니다. From 7ef6d61f13da7fe4b948b4495ad3653154fb2f30 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:39:47 +0900 Subject: [PATCH 17/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 3543abb08..5609ff3d0 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -178,7 +178,7 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 - 라우트가 정적이면, 라우트 세그먼트의 모든 서버 컴포넌트 페이로드가 prefetch됩니다. - 라우트가 동적이면, 첫 번째 공유 레이아웃에서 첫 번째 `loading.js` 파일까지의 페이로드가 prefetch됩니다. 이렇게 하면 라우트 전체를 동적으로 prefetch하는 비용이 줄어들며, 동적 라우트에 대한 [즉시 로딩 상태](/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states)를 허용합니다. -> **알아두면 좋은 것**: +> **참고**: > > - Prefetching은 프로덕션에서만 활성화됩니다. > - Prefetching은 ``에 `prefetch={false}`를 전달하여 비활성화할 수 있습니다. From 5725cfd4af4f9bb9a1b5ecd89c87c41f77d9c44c Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:40:03 +0900 Subject: [PATCH 18/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 5609ff3d0..42a060a3d 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -148,7 +148,7 @@ export default function Page() { - 라우트 전환은 ``를 사용하거나 `router.push()`를 호출하여 시작됩니다. - 라우터는 브라우저의 주소 표시줄에 URL을 업데이트합니다. - 라우터는 [클라이언트 측 캐시](#client-side-caching-of-rendered-server-components)에서 변경되지 않은 세그먼트(예: 공유된 레이아웃)를 재사용하여 불필요한 작업을 피합니다. 이것은 [부분 렌더링](/docs/app/building-your-application/routing#partial-rendering)이라고도 합니다. -- 만약 [소프트 내비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면, 라우터는 [하드 내비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. +- [소프트 내비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면 라우터는 [하드 내비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. - If created, [loading UI](/docs/app/building-your-application/routing/loading-ui-and-streaming) is shown from the server while the payload is being fetched. - 생성된 경우, [로딩 UI](/docs/app/building-your-application/routing/loading-ui-and-streaming)는 페이로드가 fetched되는 동안 서버로부터 표시됩니다. - 라우터는 캐시된 또는 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링 합니다. From b690b9f179fcbe198f47da240b9f45a72535c6f2 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:40:19 +0900 Subject: [PATCH 19/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 42a060a3d..49511e97d 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -151,7 +151,7 @@ export default function Page() { - [소프트 내비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면 라우터는 [하드 내비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. - If created, [loading UI](/docs/app/building-your-application/routing/loading-ui-and-streaming) is shown from the server while the payload is being fetched. - 생성된 경우, [로딩 UI](/docs/app/building-your-application/routing/loading-ui-and-streaming)는 페이로드가 fetched되는 동안 서버로부터 표시됩니다. -- 라우터는 캐시된 또는 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링 합니다. +- 라우터는 캐시되거나 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링 합니다. ### 렌더링 된 서버 컴포넌트의 클라이언트 측 캐시 From e20cf81a83062b10dac5707d63eca27d5dc62739 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:40:34 +0900 Subject: [PATCH 20/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 49511e97d..a8fe92210 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -155,7 +155,7 @@ export default function Page() { ### 렌더링 된 서버 컴포넌트의 클라이언트 측 캐시 -> **알아두면 좋은 것:** 이 클라이언트 측 캐시는 서버 측 [Next.js HTTP 캐시](/docs/app/building-your-application/data-fetching#caching-data)와 다릅니다. +> **참고:** 클라이언트 측 캐시는 서버 측 [Next.js HTTP 캐시](/docs/app/building-your-application/data-fetching#caching-data)와 다릅니다. 새로운 라우터는 서버 컴포넌트의 **렌더링 된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효화 할 수 있으며, 동시 렌더링 간 일관성을 보장합니다. From 09bea000bdcfcf46f9cd5f814625ae9f6aa9bc4f Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:40:49 +0900 Subject: [PATCH 21/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index a8fe92210..98d12f4a7 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -159,7 +159,7 @@ export default function Page() { 새로운 라우터는 서버 컴포넌트의 **렌더링 된 결과**를 저장하는 **인메모리 클라이언트 측 캐시**를 가지고 있습니다. 캐시는 라우트 세그먼트로 분할되어 어느 수준에서든 무효화 할 수 있으며, 동시 렌더링 간 일관성을 보장합니다. -유저가 앱 내에서 이동을 하면, 라우터는 이전에 fetched된 세그먼트의 페이로드 **그리고** [prefetch된](#prefetching) 세그먼트를 캐시에 저장합니다. +사용자가 앱 내에서 이동을 하면, 라우터는 이전에 가져온 세그먼트의 페이로드 **그리고** [prefetched](#prefetching) 세그먼트를 캐시에 저장합니다. 이는, 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링 하는 것을 피함으로써 성능을 향상시킵니다. From 3f014f4474c86398c06161d04def7b51b98483b8 Mon Sep 17 00:00:00 2001 From: Hyerin Date: Sun, 23 Jul 2023 13:41:05 +0900 Subject: [PATCH 22/26] Update docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 임성호 <70130721+sungh0lim@users.noreply.github.com> --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 98d12f4a7..1d14c94c9 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -161,7 +161,7 @@ export default function Page() { 사용자가 앱 내에서 이동을 하면, 라우터는 이전에 가져온 세그먼트의 페이로드 **그리고** [prefetched](#prefetching) 세그먼트를 캐시에 저장합니다. -이는, 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링 하는 것을 피함으로써 성능을 향상시킵니다. +이는 특정 경우에 라우터가 서버에 새 요청을 보내지 않고 캐시를 재사용할 수 있음을 의미합니다. 이는 데이터를 다시 가져오고 컴포넌트를 불필요하게 다시 렌더링 하는 것을 피함으로써 성능을 향상시킵니다. ### 캐시 무효로 하기 From 48f81fa11e4c72707f48f64744a5e75a9571468c Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sun, 23 Jul 2023 13:52:41 +0900 Subject: [PATCH 23/26] =?UTF-8?q?L152:=20=EB=82=A8=EC=95=84=EC=9E=88?= =?UTF-8?q?=EB=8A=94=20=EC=9B=90=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01-routing/03-linking-and-navigating.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 1d14c94c9..dc9dfef46 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -149,7 +149,6 @@ export default function Page() { - 라우터는 브라우저의 주소 표시줄에 URL을 업데이트합니다. - 라우터는 [클라이언트 측 캐시](#client-side-caching-of-rendered-server-components)에서 변경되지 않은 세그먼트(예: 공유된 레이아웃)를 재사용하여 불필요한 작업을 피합니다. 이것은 [부분 렌더링](/docs/app/building-your-application/routing#partial-rendering)이라고도 합니다. - [소프트 내비게이션의 조건](#conditions-for-soft-navigation)이 충족되면, 라우터는 서버가 아닌 캐시에서 새로운 세그먼트를 가져옵니다. 그렇지 않으면 라우터는 [하드 내비게이션](#hard-navigation)을 수행하고 서버로부터 서버 컴포넌트 페이로드를 가져옵니다. -- If created, [loading UI](/docs/app/building-your-application/routing/loading-ui-and-streaming) is shown from the server while the payload is being fetched. - 생성된 경우, [로딩 UI](/docs/app/building-your-application/routing/loading-ui-and-streaming)는 페이로드가 fetched되는 동안 서버로부터 표시됩니다. - 라우터는 캐시되거나 신선한 페이로드를 사용하여 클라이언트에서 새로운 세그먼트를 렌더링 합니다. From 39f85ea389f25da3d5e99f0f50645cf4040cb0e5 Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sun, 23 Jul 2023 13:53:51 +0900 Subject: [PATCH 24/26] =?UTF-8?q?L178:=20prefetched=20=ED=95=9C=EA=B8=80?= =?UTF-8?q?=EB=A1=9C=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01-routing/03-linking-and-navigating.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index dc9dfef46..6055faafe 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -175,7 +175,7 @@ Prefetching은 라우트를 방문하기 전에 백그라운드에서 라우트 **정적 및 동적 라우트**: - 라우트가 정적이면, 라우트 세그먼트의 모든 서버 컴포넌트 페이로드가 prefetch됩니다. -- 라우트가 동적이면, 첫 번째 공유 레이아웃에서 첫 번째 `loading.js` 파일까지의 페이로드가 prefetch됩니다. 이렇게 하면 라우트 전체를 동적으로 prefetch하는 비용이 줄어들며, 동적 라우트에 대한 [즉시 로딩 상태](/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states)를 허용합니다. +- 라우트가 동적이면, 첫 번째 공유 레이아웃에서 첫 번째 `loading.js` 파일까지의 페이로드가 prefetch됩니다. 이렇게 하면 라우트 전체를 동적으로 미리 가져오는 비용이 줄어들며, 동적 라우트에 대한 [즉시 로딩 상태](/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states)를 허용합니다. > **참고**: > From f266aec9948c568235e5cd27fc6ecfdad8e3ef54 Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sun, 23 Jul 2023 13:55:25 +0900 Subject: [PATCH 25/26] =?UTF-8?q?L121:=20=EC=9B=90=EB=AC=B8=EC=97=90=20?= =?UTF-8?q?=EC=97=86=EB=8A=94=20=EB=82=B4=EC=9A=A9=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01-routing/03-linking-and-navigating.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 6055faafe..8bae06290 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -118,7 +118,6 @@ export function Navigation({ navLinks }) { ## `useRouter()` Hook -The hook allows you to programmatically change routes inside [Client Components](/docs/getting-started/react-essentials). `useRouter` hook은 [클라이언트 컴포넌트](/docs/getting-started/react-essentials) 내부에서 라우트를 프로그래밍 방식으로 변경할 수 있게 합니다. `useRouter`를 사용하려면 `next/navigation`에서 import하고 클라이언트 컴포넌트 내부에서 Hook을 호출하세요: From fa9adf9ad1357c0797d71a5c48dcded048281570 Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sun, 23 Jul 2023 14:02:56 +0900 Subject: [PATCH 26/26] =?UTF-8?q?L10:=20Toc=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01-routing/03-linking-and-navigating.mdx | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx index 8bae06290..d6d803641 100644 --- a/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx +++ b/docs/02-app/01-building-your-application/01-routing/03-linking-and-navigating.mdx @@ -7,21 +7,8 @@ Next.js 라우터는 [서버 중심 라우팅](/docs/app/building-your-applicati 라우트 사이를 이동하는 방법에는 두 가지가 있습니다. -- [`` 컴포넌트](#link-컴포넌트) -- [예시](#예시) - - [동적 세그먼트에 링크 걸기](#동적-세그먼트에-링크-걸기) - - [활성 링크 확인하기](#활성-링크-확인하기) - - [`id`로 스크롤하기](#id로-스크롤하기) +- [`` 컴포넌트](#link-컴포넌트) - [`useRouter()` Hook](#userouter-hook) -- [내비게이션의 작동 방식](#내비게이션의-작동-방식) - - [렌더링 된 서버 컴포넌트의 클라이언트 측 캐시](#렌더링-된-서버-컴포넌트의-클라이언트-측-캐시) - - [캐시 무효로 하기](#캐시-무효로-하기) - - [Prefetching](#prefetching) - - [소프트 내비게이션](#소프트-내비게이션) - - [소프트 내비게이션의 조건](#소프트-내비게이션의-조건) - - [하드 내비게이션](#하드-내비게이션) - - [뒤로 가기/앞으로 가기 내비게이션](#뒤로-가기앞으로-가기-내비게이션) - - [포커스와 스크롤 관리](#포커스와-스크롤-관리) 이 페이지에서는 ``, `useRouter()`를 사용하는 방법과 내비게이션이 작동하는 방식에 대해 자세히 알아보겠습니다.