Prop Drilling과 Contect API

Prop Drilling

1. Prop Drilling

  • PropDrilling이란? 컴포넌트 간에 데이터를 전달할 때, 발생할 수 있는 패턴을 뜻합니다.
  • 이는 상위 컴포넌트에서 데이터(상태)를 하위 컴포넌트로 전달하기 위해 중간 컴포넌트를 통해 프로퍼티를 내려주게 됩니다.
  • 중간 컴포넌트 입장에서는 타겟 자식 컴포넌트에게 데이터를 전달해주기 위해 사용하지 않는 프로퍼티를 받게 됩니다.
  • 여러 개의 컴포넌트를 거쳐야 한다면, 가장 먼저 Props가 어디서 온 것인지 추적하기 어려워 유지보수에 비효율적입니다.

2. Context API

  • Context API는 React에서 데이터를 전역으로 공유하기 위해 사용하며, 주로 Props Drilling 문제를 해결하기 위해 사용합니다.
  • Context API의 주요 구성 요소와 작동 방식은 다음과 같습니다.

 1) createContext 함수

  • createContext 함수를 사용하여, 새로운 컨텍스트 객체를 생성합니다.
  • 이 함수는 컨텍스트객체 그 객체의 Provider 컴포넌트 및 Consumer 컴포넌트를 반환합니다.
  • 다음 예시와 같이 사용할 수 있습니다.
    • 여기서 value컨텍스트의 기본 값으로 사용될 값입니다. 컴포넌트 트리에서 해당 컨텍스트의 Provider가 제공되지 않았을 때, 사용됩니다. 
const MyContext = React.createContext(value);

 

 2) Provider 컴포넌트

  • Provider 컴포넌트는 컨텍스트의 값을 제공하는 역할을 합니다.
  • 컨텍스트 값을 업데이트하고 하위 컴포넌트에 제공할 수 있습니다.
  • 다음 예시와 같이 사용할 수 있습니다.
    • 여기서 value제공할 컨텍스트 값입니다. 이 값은 Provider에 속한 모든 하위 컴포넌트에서 접근할 수 있습니다.
<MyContext.Provider value={/* value */}>
  {/* 하위 컴포넌트 */}
</MyContext.Provider>

 

 3) Consumer 컴포넌트

  • Consumer 컴포넌트를 사용하여, 컨텍스트 값을 소비할 수 있습니다.
  • Consumer 컴포넌트는 함수 or 클래스 컴포넌트 내에서 사용될 수 있습니다.
  • 다음 예시와 같이 사용할 수 있습니다.
    • 여기서 valueProvider에 제공된 컨텍스트 값입니다. Consumer 컴포넌트 내에서 이 값을 사용하여, UI를 렌더링 할 수 있습니다.
<MyContext.Consumer>
  {value => /* 컨텍스트 값(value)을 사용한 렌더링 */}
</MyContext.Consumer>

 

3. 정리하며

  • 지금까지 Props DrillingContext API에 대해 알아보았습니다.
  • Context API를 사용하면, 전역 상태를 관리하고 다양한 컴포넌트 간에 데이터를 전달할 수 있습니다.
  • 또한, 이를 활용해 Props Drilling 패턴을 피하고 컴포넌트 계층 구조를 더 깔끔하게 유지할 수 있습니다.

'Front-End Study > React' 카테고리의 다른 글

Material UI 설치하기  (0) 2024.06.16
Vercel로 React 배포하기  (0) 2024.05.05
public 폴더에서 이미지 가져오기  (0) 2024.04.22
immer  (0) 2023.09.08
React 프로젝트 생성  (0) 2023.09.08