[React] Context 복습하기

2025. 4. 10. 14:39·프레임워크 및 라이브러리/React

React Context란?

컴포넌트간의 데이터를 전달하는 또 다른 방법 ,

기존의 `props`가 가지고 있던 단점( props drilling) 을 해결하기 위해 존재한다.

 

왜 필요할까?

React에선 데이터를 전달하기 위해 props를 사용하는데요

Props는 부모 -> 자식 으로만 값을 전달할 수 있습니다.

 

App -> childA 이런 경우 문제?(불편함이)되지 않음, But 

App -> childA -> childB 이런경우 App이 childB로 데이터를 전달하려면 바로 전달하지 못하고 childA 가 중간 다리 역할을 해야함

<App>
	<ChildA>
    	<ChildB />
    <ChildA>
</App>
// App 이 ChilB에 데이터를 넘기려면

<App data="hello">
	<ChildA data={data}>
    	<ChildB data={data} />  //이런걸 Props drilling 
    <ChildA>
</App>

 

그래서 childA에서 쓰지도 않는 데이터를 childB에 전달하기 위해 코드를 작성해줘야 했음(data).. 

그런데 이런 구조가 깊어지고 또 해당 규모에서 수정이 일어나게되면 엄청나게 복잡해짐..

 

그래서 React Context가 나타나게 되었다. 

 

Context 는 데이터를  중앙에서 보관하는 일종의 데이터 보관소 (객체) 라고 볼 수 있다.

즉, 데이터를 전역처럼 다룰 수 있게 해주는 공유소,

 

Context 사용하는 법

import { createContext } from "react";

// 1.Context 생성
export const StudyContext = createContext(); // App 컴포넌트 바깥에 선언,

// 2. Provider로 감싸기
<StudyContext.Provider value ={ 값 }>
	<하위 컴포넌트 />
</StudyContext.Provider>

// 3. 하위 컴포넌트에서 useContext로 사용할 수있다
const data = useContext(StudyContext);

'프레임워크 및 라이브러리 > React' 카테고리의 다른 글

[React] useRef 복습하기!  (0) 2025.04.10
[React] useReducer 복습하기...  (0) 2025.04.09
[React] useEffect  (0) 2025.04.09
[React] Life Cycle 라이프 사이클  (0) 2025.04.09
[React] useState hook 복습하기  (0) 2025.04.08
'프레임워크 및 라이브러리/React' 카테고리의 다른 글
  • [React] useRef 복습하기!
  • [React] useReducer 복습하기...
  • [React] useEffect
  • [React] Life Cycle 라이프 사이클
“하루하루가 새로운 인생이다.”
“하루하루가 새로운 인생이다.”
제가 배운 지식을 정리하고 오래 기억하고 싶어서 만든 블로그입니다.
  • “하루하루가 새로운 인생이다.”
    땅콩
    “하루하루가 새로운 인생이다.”
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • 일상 (2)
      • 에러처리 (0)
      • 프로그래밍 언어 (34)
        • TypeScript (21)
        • JavaScript (6)
        • 퍼블리싱 ( HTML, CSS ) (7)
        • 코테 (0)
      • 프레임워크 및 라이브러리 (10)
        • React (10)
        • Next.js (0)
        • Vue.js (0)
        • Spring Boot (0)
      • 데이터베이스 (0)
        • Oracle (0)
      • 디자인 (0)
        • Figma (0)
      • 개발 도구 (5)
        • Git (4)
        • Docker (0)
        • IDE (1)
      • 프로젝트 (0)
        • 개인 프로젝트 (0)
        • 팀 프로젝트 (0)
        • 프로젝트 회고 (0)
      • 정보처리기사 (12)
        • 1과목 (4)
        • 2과목 (2)
        • 3과목 (2)
        • 4과목 (2)
        • 5과목 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    인터페이스
    벼락치기
    GIT
    정처기
    정보처리기사
    js
    타입스크립트
    React
    이정환
    타입 별칭
    Hook
    타입 스크립트
    TypeScript
    한 입 크기로 잘라먹는 타입스크립트
    css
    자바스크립트
    웹
    javascript
    HTML
    리액트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
“하루하루가 새로운 인생이다.”
[React] Context 복습하기
상단으로

티스토리툴바