React

[React] useContext ♦︎

Yujzu 2023. 9. 18. 18:30


# Context API

: 컴포넌트 트리에서 전역 상태를 관리하고 공유할 수 있도록 도와주는 도구 (전체적인 시스템)

- 사용 이유 : props drilling 없이 데이터를 공유할 수 있다.

useContext 훅은 이 Context API 를 함수형 컴포넌트에서 간편하게 사용하는 방법이다.

 

 

# useContext

: Context API를 사용하는 함수형 컴포넌트에서 Context 값을 쉽게 가져오기 위해 제공되는 훅(hook)

- useContext를 사용하여 컨텍스트 값을 가져올 수 있으며, 이를 통해 컴포넌트에서 컨텍스트에 저장된 데이터에 접근할 수 있다

 

[ 특징 ]

- 전역 상태 관리: 테마, 인증 상태, 사용자 정보 등 전역적으로 공유되는 데이터를 관리

- Prop Drilling 방지: 깊게 중첩된 컴포넌트에 동일한 데이터를 전달할 때 효율적

 

[ 사용 방법 ]

1. Context 생성 

- createContext 사용

import React, { createContext } from 'react';

// Context 생성
const ThemeContext = createContext("light");

- 'light'은 context 기본값

 

2. Provider로 값 전달

const App = () => {
    return (
        <ThemeContext.Provider value="light">
            <ChildComponent />
        </ThemeContext.Provider>
    );
};

 

3. useContext로 값 가져오기

import { useContext } from 'react';

const ChildComponent = () => {
    const contextValue = useContext(ThemeContext);

    return <div>{contextValue}</div>; // "light" 출력
};

 

 

# Context

: React에 내장된 Context 객체

- 컴포넌트 간에 전역적으로 데이터를 공유할 수 있도록 기능을 제공한다.

 

[ 구성 요소 ]

# Context 객체의 주요 속성

1. Provider

- 데이터를 공유하는 컴포넌트

- value 속성을 통해 하위 컴포넌트들이 접근할 context 값을 설정

- Context의 값이 변경되면 Provider로 감싼 모든 하위 컴포넌트들이 리렌더링 된다.

 

2. Consumer

- 데이터를 소비하는 컴포넌트

- 하위 컴포넌트에서 Context의 값을 읽기 위해 사용된다.

- 함수형을 사용하여 Context 값을 반환한다.

 

[ React Context의 동작 방식 ]

 

1. Context 생성: createContext로 기본 Context 값을 가진 Context를 만든다.

2. Provider 제공: Context.Provider를 통해 값을 설정하고 자식 컴포넌트에 전달한다.

3. Context 값 소비: useContext 또는 Consumer를 사용해 Context 값을 읽어온다.

 

// 1. Context 생성
const MyContext = createContext(defaultValue);

// 2. Provider를 통해 값 제공
<MyContext.Provider value={value}>
    {children}
</MyContext.Provider>

// 3. Consumer 또는 useContext로 값 소비
const value = useContext(MyContext);
<MyContext.Consumer>{value => /* ... */}</MyContext.Consumer>