별 개수: 50
속도: 2

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

React/기초

React Context API 사용 가이드

lamarcK 2025. 4. 9. 23:06

1. Context 기본 구조

javascript
클릭하여 코드 펼치기
// contexts/NavContext.jsx
import { createContext, useState } from 'react';

export const NavContext = createContext();

export const NavProvider = ({ children }) => {
    const [isNavExpanded, setIsNavExpanded] = useState(false);

    return (
        <NavContext.Provider value={{ isNavExpanded, setIsNavExpanded }}>
            {children}
        </NavContext.Provider>
    );
};
클릭하여 코드 복사

2. Context Provider 설정

javascript
클릭하여 코드 펼치기
import { NavProvider } from './contexts/NavContext';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <NavProvider>
      <App />
    </NavProvider>
  </React.StrictMode>,
);
클릭하여 코드 복사

3. Context 사용
하위 컴포넌트에서 Context 사용하기

javascript
클릭하여 코드 펼치기
import { useContext } from 'react';
import { NavContext } from './contexts/NavContext';

function Component() {
    const { isNavExpanded, setIsNavExpanded } = useContext(NavContext);

    return (
        <div className={isNavExpanded ? 'expanded' : 'collapsed'}>
            {/* 컴포넌트 내용 */}
        </div>
    );
}
클릭하여 코드 복사

4. 주요 규칙과 패턴

 

  • Provider 규칙
    • Provider는 최상위에 한 번만 배치
    • 중복 사용 피하기
    • 여러 Context 사용 시 중첩 가능
  • Context 사용 규칙
    • useContext는 반드시 컴포넌트 내부에서 사용
    • 필요한 모든 컴포넌트에서 import와 useContext 선언 필요

5. 올바른 예시

javascript
클릭하여 코드 펼치기
// 여러 Context 중첩 사용
ReactDOM.createRoot(document.getElementById('root')).render(
  <NavProvider>
    <ThemeProvider>
      <UserProvider>
        <App />
      </UserProvider>
    </ThemeProvider>
  </NavProvider>
);

// Context 사용 컴포넌트
function MyComponent() {
    const { isNavExpanded } = useContext(NavContext);
    const { theme } = useContext(ThemeContext);
    const { user } = useContext(UserContext);
    // ...
}
클릭하여 코드 복사

 

6. 주의사항

 

  1. Provider 위치
    1. Context를 사용하는 컴포넌트는 반드시 Provider 하위에 있어야 함
    2. Provider 없이 Context 사용 시 undefined 에러 발생
  2.  성능 고려사항
    1. Context 값이 변경되면 하위 모든 컴포넌트가 리렌더링될 수 있음
    2. 필요한 경우에만 Context 사용 권장
  3.  초기값 설정
javascript
클릭하여 코드 펼치기
// 안전한 Context 사용을 위한 초기값 설정
export const NavContext = createContext({
    isNavExpanded: false,
    setIsNavExpanded: () => {}
});
클릭하여 코드 복사

7. 디버깅 팁

  • React DevTools를 사용하여 Context 값 변화 추적
  • Console.log로 Context 값 확인
  • Provider가 올바른 위치에 있는지 확인

이동