본문 바로가기
WEB/React

React - Context Hook

by 주연배 2025. 5. 9.

Context

Context란 리액트 컴포넌트에서 props 없이 전역적으로 값을 공유할 수 있게 해 준다. 

 

 

Context 사용하기 

1. Context 생성

import React, { createContext, useContext, useState } from 'react';
const MyContext = createContext(); //createContext() 함수를 사용해 생성함

 

MyContext는 Provider와 Consumer를 제공한다.

근데 보통 Provider를 사용해 값을 공급하고, Consumer는 useContext를 대체할 수 있다.

 

2. Context Provider로 값 전달하기

Provider 컴포넌트를 사용해 하위 컴포넌트에게 값을 전달해준다.

value를 넣으면 그 값을 하위 컴포넌트들에서 사용할 수 있다.

export const MyProvider = ({ children }) => {
    const [user, setUser] = useState(null);

    return (
        <MyContext.Provider value={{ user, setUser }}> //값 전달
            {children}
        </MyContext.Provider>
    );
};

 

  • user : Context에서 관리할 상태
  • setUser : 그 상태를 변경하는 함수
  • value를 Provider로 감싼 컴포넌트에서 사용할 수 있음

 

3. 값 사용하기

import { useContext } from 'react';
import { MyContext } from './MyContext';

const UserProfile = () => {
    const { user, setUser } = useContext(MyContext);

    return (
        <div>
            <h1>{user ? user.username : 'Guest'}</h1>
            <button onClick={() => setUser({ username: 'juyeon' })}>로그인</button>
        </div>
    );
};
  • useContext를 사용해 하위 컴포넌트에서 Context의 값을 가져올 수 있다
  • 즉, useContext(MyContext)를 통해 MyContext에서 전달된 user와 setUser를 사용할 수 있다.
  • 삼항연산자를 사용해 user가 없으면 'Guest'를 출력하게 한다.

 

4. Context를 여러 컴포넌트에 적용하기

import { MyProvider } from './MyContext';
import UserProfile from './UserProfile';

function App() {
    return (
        <MyProvider>
            <UserProfile />
        </MyProvider>
    );
}

export default App;
  • MyProvider로 감싸면 하위에 있는 UserProfile 같은 컴포넌트에서 useContext를 사용해 user 상태를 공유할 수 있다.

'WEB > React' 카테고리의 다른 글

React 라우터(Router) 설정하기  (0) 2025.03.30