-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
01-getting-started > 03-react-essentials.mdx 번역 #249
Conversation
안녕하세요! 번역 완료했습니다. PR 확인 및 내용 검수 부탁드리겠습니다! |
@@ -808,7 +808,7 @@ export default function RootLayout({ children }) { | |||
|
|||
### 서버 컴포넌트 간 데이터 공유 | |||
|
|||
서버 컴포넌트는 인터랙티브하지 않으므로 React state에서 읽지 않으므로 데이터를 공유하기 위해 React context가 필요하지 않습니다. 대신 여러 서버 컴포넌트가 액세스해야 하는 공통 데이터에 네이티브 JavaScript 패턴을 사용할 수 있습니다. 예를 들어 모듈을 사용하여 여러 컴포넌트에서 데이터베이스 연결을 공유할 수 있습니다. | |||
서버 컴포넌트는 인터랙티브하지 않으므로 React state에서 읽지 않으므로 데이터를 공유하기 위해 React context가 필요하지 않습니다. 대신 여러 서버 컴포넌트가 액세스해야 하는 공통 데이터에 native JavaScript 패턴을 사용할 수 있습니다. 예를 들어 모듈을 사용하여 여러 컴포넌트에서 데이터베이스 연결을 공유할 수 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
윗 부분에 인터렉
션 로 하셨는데, 하나로 통일이 필요해보입니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 피드백 감사합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
긴 문서 번역하시느라 수고 많으셨습니다!
꽤 크리티컬한 이슈들이 많이 발견되어 확인 및 수정 요청드립니다.
--- | ||
|
||
To build applications with Next.js, it helps to be familiar with React's newer features such as Server Components. This page will go through the differences between Server and Client Components, when to use them, and recommended patterns. | ||
Next.js로 애플리케이션을 빌드하려면 서버 컴포넌트와 같은 React의 최신 기능에 익숙해지면 도움이 됩니다. 이 페이지에서는 서버 컴포넌트와 클라이언트 컴포넌트의 차이점, 사용 시기, 권장 패턴에 대해 설명합니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Next.js로 애플리케이션을 빌드하려면 서버 컴포넌트와 같은 React의 최신 기능에 익숙해지면 도움이 됩니다. 이 페이지에서는 서버 컴포넌트와 클라이언트 컴포넌트의 차이점, 사용 시기, 권장 패턴에 대해 설명합니다. | |
Next.js로 애플리케이션을 빌드하기 위해서는 서버 컴포넌트와 같은 리액트의 최신 기능에 익숙해지는 것이 좋습니다. 이 페이지에서는 서버 컴포넌트와 클라이언트 컴포넌트의 차이점, 사용 시기, 권장 패턴을 설명합니다. |
조금 문장을 다듬어 봤습니다! 그리고 용어 확인에 의거 React는 한글로 번역하면 좋을 것 같습니다!
|
||
### Why Server Components? | ||
페이지를 더 작은 컴포넌트로 분할하면 대부분의 컴포넌트가 비대화형이며 서버에서 서버 컴포넌트로 렌더링할 수 있음을 알 수 있습니다. 더 작은 인터랙티브 UI의 경우 클라이언트 컴포넌트를 _뿌릴 수_ 있습니다. 이는 Next.js의 서버 우선 접근 방식과 일치합니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
페이지를 더 작은 컴포넌트로 분할하면 대부분의 컴포넌트가 비대화형이며 서버에서 서버 컴포넌트로 렌더링할 수 있음을 알 수 있습니다. 더 작은 인터랙티브 UI의 경우 클라이언트 컴포넌트를 _뿌릴 수_ 있습니다. 이는 Next.js의 서버 우선 접근 방식과 일치합니다. | |
페이지를 더 작은 컴포넌트로 분할해보면 대부분의 컴포넌트가 인터렉티브하지 않음을 알 수 있습니다. 인터렉티브하지 않은 컴포넌트는 서버에서 서버 컴포넌트로 렌더링할 수 있습니다. 더 작은 인터랙티브 UI에는 클라이언트 컴포넌트의 기능을 _뿌릴 수_ 있습니다. 이는 Next.js의 서버 우선 접근 방식과 일치합니다. |
뿌린다는 말이 살짝 이해가 안 갈 수 있다는 생각이 들기는 합니다. '추가할 수', '얹일 수'와 같은 단어는 어떨까요?
|
||
With Server Components, the initial page load is faster, and the client-side JavaScript bundle size is reduced. The base client-side runtime is **cacheable** and **predictable** in size, and does _not_ increase as your application grows. Additional JavaScript is _only added_ as client-side interactivity is used in your application through [Client Components](#client-components). | ||
서버 컴포넌트를 사용하면 개발자가 서버 인프라를 더 잘 활용할 수 있습니다. 예를 들어, 데이터 불러오기를 데이터베이스에 더 가까운 서버로 옮기고, 이전에는 클라이언트 자바스크립트 번들 크기에 영향을 미쳤던 대규모 종속성을 서버에 유지하여 성능을 개선할 수 있습니다. 서버 컴포넌트를 사용하면 React 애플리케이션을 작성하는 것이 PHP나 Ruby on Rails와 비슷하게 느껴지지만, React의 강력한 성능과 유연성, UI 템플릿을 위한 컴포넌트 모델을 사용할 수 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
서버 컴포넌트를 사용하면 개발자가 서버 인프라를 더 잘 활용할 수 있습니다. 예를 들어, 데이터 불러오기를 데이터베이스에 더 가까운 서버로 옮기고, 이전에는 클라이언트 자바스크립트 번들 크기에 영향을 미쳤던 대규모 종속성을 서버에 유지하여 성능을 개선할 수 있습니다. 서버 컴포넌트를 사용하면 React 애플리케이션을 작성하는 것이 PHP나 Ruby on Rails와 비슷하게 느껴지지만, React의 강력한 성능과 유연성, UI 템플릿을 위한 컴포넌트 모델을 사용할 수 있습니다. | |
서버 컴포넌트를 사용하면 개발자가 서버 인프라를 더 잘 활용할 수 있습니다. 예를 들어, 데이터 불러오기를 데이터베이스에 더 가까운 서버로 옮기고, 이전에는 클라이언트 자바스크립트 번들 크기에 영향을 미쳤던 대규모 종속성을 서버에 유지하여 성능을 개선할 수 있습니다. 서버 컴포넌트는 PHP나 Ruby on Rails와 비슷하게 React 애플리케이션을 작성하면서, React의 강력한 성능과 유연성, UI 템플릿을 위한 컴포넌트 모델을 사용할 수 있도록 만들어줍니다. |
원문의 뉘앙스를 살려 번역을 수정했습니다.
|
||
To make the transition to Server Components easier, all components inside the [App Router](/docs/app/building-your-application/routing#the-app-router) are Server Components by default, including [special files](/docs/app/building-your-application/routing#file-conventions) and [colocated components](/docs/app/building-your-application/routing#colocation). This allows you to automatically adopt them with no extra work, and achieve great performance out of the box. You can also optionally opt-in to Client Components using the ['use client' directive](#the-use-client-directive). | ||
Next.js로 경로가 로드되면 초기 HTML이 서버에서 렌더링됩니다. 그런 다음 이 HTML은 브라우저에서 **점진적으로 향상**되어 클라이언트가 Next.js 및 React 클라이언트 측 런타임을 비동기적으로 로드하여 애플리케이션을 넘겨받아 상호 작용을 추가할 수 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Next.js로 경로가 로드되면 초기 HTML이 서버에서 렌더링됩니다. 그런 다음 이 HTML은 브라우저에서 **점진적으로 향상**되어 클라이언트가 Next.js 및 React 클라이언트 측 런타임을 비동기적으로 로드하여 애플리케이션을 넘겨받아 상호 작용을 추가할 수 있습니다. | |
Next.js가 경로를 로딩하면 초기 HTML은 서버에서 렌더링됩니다. Next.js 및 React 클라이언트 측 런타임을 비동기적으로 로딩하는 것으로 서버에서 렌더링된 HTML은 브라우저에서 **점진적으로 향상**됩니다. 이런 방식으로 클라이언트는 애플리케이션을 넘겨받고 상호 작용을 추가합니다. |
서버에서 렌더링된 HTML이 클라이언트로 넘어가고, 클라이언트가 받은 HTML에 비동기적으로 로딩된 런타임을 추가하면서 애플리케이션이 인터렉티브해진다는 내용을 담아내야 하는데 쉽지 않네요..! 브라우저에서 점진적으로 향상된다는 부분이 살짝 까다로운 것 같습니다.
|
||
## Client Components | ||
서버 컴포넌트로 쉽게 전환할 수 있도록 [특수 파일](/docs/app/building-your-application/routing#file-conventions) 및 [코로케이션된 컴포넌트](/docs/app/building-your-application/routing#colocation)를 포함하여 [App Router](/docs/app/building-your-application/routing#the-app-router) 내의 모든 컴포넌트는 기본적으로 서버 컴포넌트로 전환됩니다. 따라서 추가 작업 없이 자동으로 적용하여 즉시 뛰어난 성능을 얻을 수 있습니다. ['use client' 지시문](#the-use-client-directive)을 사용하여 선택적으로 클라이언트 컴포넌트를 사용할 수도 있습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
서버 컴포넌트로 쉽게 전환할 수 있도록 [특수 파일](/docs/app/building-your-application/routing#file-conventions) 및 [코로케이션된 컴포넌트](/docs/app/building-your-application/routing#colocation)를 포함하여 [App Router](/docs/app/building-your-application/routing#the-app-router) 내의 모든 컴포넌트는 기본적으로 서버 컴포넌트로 전환됩니다. 따라서 추가 작업 없이 자동으로 적용하여 즉시 뛰어난 성능을 얻을 수 있습니다. ['use client' 지시문](#the-use-client-directive)을 사용하여 선택적으로 클라이언트 컴포넌트를 사용할 수도 있습니다. | |
서버 컴포넌트로 쉽게 전환할 수 있도록 [특수 파일](/docs/app/building-your-application/routing#file-conventions) 및 [코로케이션된 컴포넌트](/docs/app/building-your-application/routing#colocation)를 포함하여 [앱 라우터](/docs/app/building-your-application/routing#the-app-router) 내의 모든 컴포넌트는 기본적으로 서버 컴포넌트로 전환됩니다. 따라서 추가 작업 없이 자동으로 적용하여 즉시 뛰어난 성능을 얻을 수 있습니다. ['use client' 지시문](#the-use-client-directive)을 사용하여 선택적으로 클라이언트 컴포넌트를 사용할 수도 있습니다. |
> | ||
> In the App Router, the network boundary is between Server Components and Client Components. This is different from the Pages where the boundary is between `getStaticProps`/`getServerSideProps` and Page Components. Data fetched inside Server Components do not need to be serialized as it doesn't cross the network boundary unless it is passed to a Client Component. Learn more about [data fetching](/docs/app/building-your-application/data-fetching#fetching-data-on-the-server) with Server Components. | ||
> 앱 라우터에서 네트워크 경계는 서버 구성 요소와 클라이언트 구성 요소 사이입니다. 이것은 `getStaticProps`/`getServerSideProps`와 페이지 컴포넌트 사이에 경계가 있는 페이지와는 다릅니다. 서버 컴포넌트 내부에서 가져온 데이터는 클라이언트 컴포넌트로 전달되지 않는 한 네트워크 경계를 넘지 않으므로 직렬화할 필요가 없습니다. 서버 컴포넌트를 사용한 [데이터 불러오기(/docs/app/building-your-application/data-fetching#fetching-data-on-the-server)에 대해 자세히 알아보세요. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> 앱 라우터에서 네트워크 경계는 서버 구성 요소와 클라이언트 구성 요소 사이입니다. 이것은 `getStaticProps`/`getServerSideProps`와 페이지 컴포넌트 사이에 경계가 있는 페이지와는 다릅니다. 서버 컴포넌트 내부에서 가져온 데이터는 클라이언트 컴포넌트로 전달되지 않는 한 네트워크 경계를 넘지 않으므로 직렬화할 필요가 없습니다. 서버 컴포넌트를 사용한 [데이터 불러오기(/docs/app/building-your-application/data-fetching#fetching-data-on-the-server)에 대해 자세히 알아보세요. | |
> 앱 라우터의 네트워크 경계는 서버 컴포넌트와 클라이언트 컴포넌트 사이입니다. `getStaticProps`/`getServerSideProps`와 페이지 컴포넌트 사이에 네트워크 경계가 있는 페이지 라우터와 다릅니다. 서버 컴포넌트 내부에서 가져온 데이터는 클라이언트 컴포넌트로 전달되지 않는 한 네트워크 경계를 넘지 않으므로 직렬화할 필요가 없습니다. 서버 컴포넌트를 사용한 [데이터 가져오기](/docs/app/building-your-application/data-fetching#fetching-data-on-the-server)에 대해 자세히 알아보세요. |
swr 한국어 공식 문서에서는 '데이터 가져오기'로 번역을 했네요.
|
||
If you're new to React, we also recommend referring to the [React Docs](https://react.dev/learn). Here are some great resources for learning: | ||
React를 처음 사용하는 경우, [React Docs](https://react.dev/learn)를 참고하시길 권장합니다. 다음은 학습에 도움이 되는 몇 가지 훌륭한 리소스입니다.: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
React를 처음 사용하는 경우, [React Docs](https://react.dev/learn)를 참고하시길 권장합니다. 다음은 학습에 도움이 되는 몇 가지 훌륭한 리소스입니다.: | |
React를 처음 사용하는 경우, [React Docs](https://react.dev/learn)를 참고하시길 권장합니다. 다음은 학습에 도움이 되는 몇 가지 훌륭한 리소스입니다. |
쌍점은 지양해주세요.
@@ -479,7 +480,7 @@ export default function Page() { | |||
<div> | |||
<p>View pictures</p> | |||
|
|||
{/* Error: `useState` can not be used within Server Components */} | |||
{/* 오류: `use State`는 서버 컴포넌트 내에서 사용할 수 없습니다. */} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
{/* 오류: `use State`는 서버 컴포넌트 내에서 사용할 수 없습니다. */} | |
{/* 오류: `useState`는 서버 컴포넌트 내에서 사용할 수 없습니다. */} |
|
||
To fix this, you can wrap third-party components that rely on client-only features in your own Client Components: | ||
이 문제를 해결하려면 클라이언트 전용 기능에 의존하는 타사 컴포넌트를 자체 클라이언트 컴포넌트로 래핑할 수 있습니다: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 문제를 해결하려면 클라이언트 전용 기능에 의존하는 타사 컴포넌트를 자체 클라이언트 컴포넌트로 래핑할 수 있습니다: | |
클라이언트 전용 기능에 의존하는 타사 컴포넌트를 자체 클라이언트 컴포넌트로 래핑해 이 문제를 해결할 수 있습니다. |
|
||
## Context | ||
|
||
Most React applications rely on [context](https://react.dev/reference/react/useContext) to share data between components, either directly via [`createContext`](https://react.dev/reference/react/useContext), or indirectly via provider components imported from third-party libraries. | ||
대부분의 React 애플리케이션은 컴포넌트 간에 데이터를 공유하기 위해 [context](https://react.dev/reference/react/useContext) 의존하는데, 이는 [`createContext`](https://react.dev/reference/react/useContext)를 통해 직접적으로 또는 타사 라이브러리에서 가져온 공급자 컴포넌트를 통해 간접적으로 이루어집니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
대부분의 React 애플리케이션은 컴포넌트 간에 데이터를 공유하기 위해 [context](https://react.dev/reference/react/useContext) 의존하는데, 이는 [`createContext`](https://react.dev/reference/react/useContext)를 통해 직접적으로 또는 타사 라이브러리에서 가져온 공급자 컴포넌트를 통해 간접적으로 이루어집니다. | |
대부분의 React 애플리케이션은 컴포넌트 간에 데이터를 공유하기 위해 [컨텍스트](https://react.dev/reference/react/useContext)에 의존하는데, 이는 [`createContext`](https://react.dev/reference/react/useContext)를 통해 직접적으로 또는 타사 라이브러리에서 가져온 공급자 컴포넌트를 통해 간접적으로 이루어집니다. |
Provider Component를 공급자 컴포넌트로 번역해도 괜찮을지 다른 번역 기여자분들의 의견이 궁금합니다! 결정된다면 프로바이더 혹은 공급자로 통일이 필요합니다.
@chaejunlee 님 상세한 리뷰 감사합니다! 야근이 요새 좀 많아서 주말에 수정해서 올리겠습니다~! |
ref #12 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
수고하셨습니다! 다른 남은 티켓 진행 원하시면 댓글 남겨주세요!
기여자용
문서 개선
pnpm prettier-fix
를 실행하여 서식 문제를 해결합니다. - 문서 기여 가이드를 읽고 문서 지침을 따르는지 확인하세요: https://github.com/Nextjs-kr/Nextjs.ko/blob/main/packages/next/README.mdProgress
pnpm prettier-fix