일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 성능최적화
- 폰트적용하기
- 제네릭
- 2022
- JS console
- React.js
- typescript
- 반복줄이기
- utilty type
- CSS
- 타입스크립트
- 개발콘텐츠
- TSDoc
- vue.js
- 누구나 자료구조와 알고리즘
- react
- reactjs
- returnType
- React Native
- 공통컴포넌트
- NonNullable
- 커스텀
- 레이아웃쪼개기
- const 단언문
- 타입좁히기
- 티스토리꾸미기
- click and drag
- Chart.js
- javascript
- 리액트
- Today
- Total
몽땅뚝딱 개발자
[React] Provider, useContext 본문
컨텍스트(Context)는 React에서 컴포넌트 트리 전체에 걸쳐 데이터를 쉽게 전달하고 공유하기 위해 사용되는 기능입니다. 컨텍스트를 이용하면 컴포넌트 간의 데이터를 전역적으로 관리하고, 필요한 곳에서 쉽게 접근할 수 있습니다. 이는 특히 여러 컴포넌트가 공통적으로 사용하는 데이터(예: 테마, 사용자 정보, 언어 설정 등)를 전달할 때 유용합니다.
컨텍스트의 주요 요소
1. 컨텍스트 생성 (React.createContext)
컨텍스트를 만들기 위해 React.createContext 함수를 사용합니다. 이 함수는 기본값을 받을 수 있는 컨텍스트 객체를 반환합니다.
2. 프로바이더 (Context.Provider)
Provider는 컨텍스트를 제공하는 컴포넌트입니다. Provider를 사용하면 컴포넌트 트리의 하위 컴포넌트에게 값을 전달할 수 있습니다. Provider는 value prop을 받아서 이를 하위 컴포넌트들에게 전달합니다.
3. 컨슈머 (Context.Consumer)
컨슈머는 컨텍스트 값을 사용하는 컴포넌트입니다. 컨슈머는 함수 컴포넌트에서 주로 사용되며, 제공된 컨텍스트 값을 인자로 받는 함수로 값을 접근할 수 있습니다.
4. useContext 훅
함수 컴포넌트에서 컨텍스트를 더 쉽게 사용할 수 있도록 제공되는 React 훅입니다. useContext 훅을 사용하면 컨슈머 없이도 컨텍스트 값을 직접 접근할 수 있습니다.
import React, { createContext, useState, useContext } from 'react';
// 컨텍스트 생성
const ThemeContext = createContext('light');
const App = () => {
const [theme, setTheme] = useState('light');
return (
<ThemeContext.Provider value={{ theme, setTheme }}>
<Toolbar />
</ThemeContext.Provider>
);
};
const Toolbar = () => {
return (
<div>
<ThemeButton />
</div>
);
};
const ThemeButton = () => {
const { theme, setTheme } = useContext(ThemeContext);
return (
<button
onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}
style={{ background: theme === 'light' ? '#fff' : '#333', color: theme === 'light' ? '#000' : '#fff' }}
>
Toggle Theme
</button>
);
};
export default App;
1. 프로퍼티 드릴링(prop drilling) 방지
컴포넌트 트리에서 깊숙한 곳에 있는 자식 컴포넌트에 데이터를 전달해야 할 때, 중간 단계의 여러 컴포넌트를 거쳐야 할 수 있습니다. 이러한 방식을 프로퍼티 드릴링이라고 부르는데, 이는 코드의 가독성을 떨어뜨리고 유지보수를 어렵게 만듭니다. useContext를 사용하면 상위 컴포넌트에서 정의한 컨텍스트 값을 하위 컴포넌트가 직접 접근할 수 있어, 중간 컴포넌트를 거치지 않고 데이터를 전달할 수 있습니다.
2. 상태 관리 간소화
어플리케이션의 전역 상태를 관리할 때, useContext는 훌륭한 도구가 됩니다. 예를 들어, 사용자 인증 정보, 테마 설정, 현재 언어 등 여러 컴포넌트에서 공통적으로 사용하는 상태를 컨텍스트에 저장하고, 필요한 컴포넌트에서 이 컨텍스트를 쉽게 접근할 수 있게 해줍니다.
3. 리액티브 업데이트
컨텍스트 값을 업데이트하면 이 값을 사용하는 모든 컴포넌트가 자동으로 다시 렌더링됩니다. 이는 전역 상태가 변경될 때 이를 사용하는 컴포넌트들이 자동으로 최신 상태를 반영하게 해줍니다.
4. 코드의 일관성 및 유지보수성 향상
컨텍스트를 사용하면 코드의 일관성이 높아지고, 전역 상태를 중앙 집중식으로 관리할 수 있어 유지보수가 쉬워집니다. 이는 특히 대규모 어플리케이션에서 매우 유용합니다.
'Development > React.js · Next.js' 카테고리의 다른 글
[Next.js] 스토리북 도입 (미작성) (0) | 2023.12.29 |
---|---|
[Next.js] 스타일링 도구 (0) | 2023.12.20 |
[Next.js] 기본 개념 (0) | 2023.12.20 |
React Query 개념 정리 (1) | 2023.10.19 |
CRA 세팅 시 기본 파일 정보 (0) | 2023.10.15 |