0Pricing
React Academy · 강의

Prop Drilling: 문제가 될 때와 괜찮을 때

깊은 전달 연쇄를 식별하고 불필요한 복잡성과 실제 복잡성을 구분합니다.

Prop Drilling: 문제가 될 때와 괜찮을 때은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

이 학습에서는 프롭 드릴링을 식별하고, 언제 실제 문제가 발생하는지 이해하며, 프롭을 전달하는 것이 올바르고 간단한 해결책인 상황과 구분하는 방법을 배웁니다.

프롭 드릴링이란?

프롭 드릴링은 프롭을 직접 사용하지 않는 중간 컴포넌트를 거쳐 전달할 때 발생합니다. 실제로 필요한 것은 해당 컴포넌트의 자식 컴포넌트뿐입니다. 각 중간 계층은 프롭을 받아서 다시 전달해야 합니다.
// Middle component: receives 'user' only to pass it down
function Layout({ user }) {
  return <Sidebar user={user} />;
}
// Sidebar: receives 'user' only to pass it down
function Sidebar({ user }) {
  return <UserAvatar user={user} />;
}
// UserAvatar: actually uses 'user'
function UserAvatar({ user }) {
  return <img src={user.avatarUrl} />;
}

드릴링이 괜찮은 경우

1~2단계로 전달하는 것은 대체로 완전히 괜찮으며 가장 간단한 해결책입니다. 얕은 깊이에서 프롭을 하나 더 추가하는 비용보다 컨텍스트나 상태 라이브러리를 추가하는 비용이 더 큽니다.

드릴링이 문제가 되었다는 신호

다음과 같은 경우 드릴링이 문제가 됩니다. (1) 프롭이 해당 프롭을 사용하지 않는 컴포넌트 4개 이상의 계층을 통과하는 경우, (2) 프롭 이름을 바꾸려면 여러 파일을 수정해야 하는 경우, (3) 실제로 데이터를 사용하는 컴포넌트를 파악하기 어려운 경우입니다.

컴포넌트 조합으로 리팩터링하기

컨텍스트를 사용하기 전에 **컴포넌트 조합**을 시도해 보십시오. 원시 데이터 대신 완전히 렌더링된 데이터 사용 컴포넌트를 프롭(또는 children)으로 전달합니다. 그러면 중간 계층은 데이터에 대해 전혀 알 필요가 없습니다.
// Instead of drilling 'user' through Layout → Sidebar → UserAvatar,
// render UserAvatar at the top level and pass it as a slot:
function App() {
  return <Layout sidebar={<UserAvatar user={user} />} />;
}

컴포넌트 조합으로 결합도 낮추기

조합이란 데이터를 소유한 부모 컴포넌트가 데이터 사용 컴포넌트도 직접 렌더링하는 것을 의미합니다. 중간 레이아웃 컴포넌트는 완성된 JSX를 받으므로 데이터와 완전히 분리됩니다.

컨텍스트를 사용하는 경우

다음과 같은 경우 컨텍스트를 사용합니다. (1) 조합을 사용하려면 복잡한 JSX를 여러 계층에 걸쳐 전달해야 하는 경우, (2) 트리 전반의 서로 관련 없는 여러 컴포넌트가 동일한 데이터를 필요로 하는 경우(예: 현재 사용자, 테마, 로캘)입니다.

상태 라이브러리를 사용하는 경우

상태가 복잡하거나 자주 업데이트되거나 개발 도구가 필요하거나 완전히 분리된 컴포넌트 트리 간에 공유되어야 할 때는 Zustand, Redux 또는 이와 유사한 라이브러리를 사용합니다.

역방향 데이터 흐름

프롭 드릴링은 콜백에도 적용됩니다. `onChange` 핸들러를 5개 계층 아래까지 전달하는 일은 데이터 전달만큼이나 번거롭습니다. 콜백에도 동일한 조합 및 컨텍스트 전략을 적용하십시오.

판단 흐름

다음과 같이 판단하십시오. 계층이 몇 개인가요? 1~2개라면 그대로 전달합니다. 3개 이상이라면 먼저 조합을 시도합니다. 그래도 복잡하다면 컨텍스트를 사용합니다. 업데이트 로직이 복잡하거나 트리 간에 공유해야 한다면 상태 라이브러리를 사용합니다.

빠른 확인

프롭 드릴링을 해결하기 위해 컨텍스트를 사용하기 전에(BEFORE) 어떤 해결책을 시도해야 합니까?

복습

프롭을 1~2개 계층으로 전달하는 것은 괜찮습니다. 3개 계층을 넘으면 먼저 컴포넌트 조합을 시도하십시오. 동일한 데이터를 사용하는 컴포넌트가 많다면 컨텍스트를 사용합니다. 상태가 복잡하거나 트리 간에 공유되어야 한다면 상태 라이브러리를 사용합니다.

다음 학습

다음 학습: **형제 컴포넌트 간 통신 패턴** — 공유 부모 상태와 콜백 프롭을 사용해 두 형제 컴포넌트를 조정합니다.

자주 묻는 질문

“Prop Drilling: 문제가 될 때와 괜찮을 때” 강의는 무료인가요?

네 — “Prop Drilling: 문제가 될 때와 괜찮을 때” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Prop Drilling: 문제가 될 때와 괜찮을 때”에서 뭘 배우나요?

깊은 전달 연쇄를 식별하고 불필요한 복잡성과 실제 복잡성을 구분합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

React Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Prop Drilling: 문제가 될 때와 괜찮을 때” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. State 끌어올리기: 원칙 및 예시
  2. Prop Drilling: 문제가 될 때와 괜찮을 때
  3. 형제 구성 요소 통신 패턴
  4. 올바른 State 위치 선택하기
← React Academy(으)로 돌아가기