일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 컴포지트패턴
- Logrus
- Helm V3
- gitops
- tenneling
- 배포 프로세스
- goland
- go
- Intellij
- AWS
- http 413
- Bastion Server
- Golines
- golang
- apollo router
- 배포 파이프라인
- Infra
- Buffered channel
- GoF
- 윈도우키보드
- Kubernetes
- GoF 디자인패턴
- 디자인패턴
- System Design
- 대규모 시스템 설계
- UnBuffered channel
- intellij ide
- notification system
- AWS Infra
- body size
Archives
- Today
- Total
Fall in IT.
[React] Context API 알아보기 본문
Context API란?
- Context API는 리액트 프로젝트에서 전역적으로 사용할 데이터가 있을때 유용한 기술이다
- 예를 들면, 사용자 로그인 정보, 애플리케이션 환경 설정, 테마 등
Context API 사용법 익히기
color.tsx - Context API 만들기
const ColorContext = createContext({
state: { color: 'black', subColor: 'tomato' },
actions: {
setColor: (color: string) => {},
setSubColor: (color: string) => {},
}
})
export default ColorContext
interface ColorProviderIProps {
children: React.ReactNode
}
function ColorProvider({ children }: ColorProviderIProps): JSX.Element {
const [color, setColor] = useState('black')
const [subColor, setSubColor] = useState('tomato')
const value: any = {
state: { color, subColor },
actions: { setColor, setSubColor }
}
return <ColorContext.Provider value={value}>{children}</ColorContext.Provider>
}
export { ColorProvider }
App.tsx - Context 사용하기
import React from 'react'
import './App.css'
import ColorBox from './components/ColorBox'
import SelectColors from './components/SelectColor'
import { ColorProvider } from './contexts/color'
function App() {
return (
<ColorProvider>
<div className="App">
<SelectColors />
<ColorBox />
</div>
</ColorProvider>
)
}
export default App
ColorBox.tsx
import React, { useContext } from 'react'
import ColorContext from '../contexts/color'
function ColorBox(): JSX.Element {
const { state } = useContext(ColorContext)
return (
<>
<div
style={{
width: '64px',
height: '64px',
background: state.color,
}}
/>
<div
style={{
width: '32px',
height: '32px',
background: state.subColor,
}}
/>
</>
)
}
export default ColorBox
SelectColor.tsx
import React, { useContext } from 'react'
import ColorContext from '../contexts/color'
const colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']
function SelectColors() {
const { actions } = useContext(ColorContext)
return (
<div>
<h2>색상을 선택하세요.</h2>
<div style={{ display: 'flex' }}>
{colors.map((color) => (
<div
key={color}
style={{
background: color,
width: '48px',
height: '48px',
cursor: 'pointer',
}}
onClick={() => actions.setColor(color)}
onContextMenu={(event) => {
event.preventDefault()
actions.setSubColor(color)
}}
/>
))}
</div>
<hr />
</div>
)
}
export default SelectColors
참조
- 리액트를 다루는 기술
- 샘플 코드, github.com/leeduyoung/react-context-api
'프레임워크 > React' 카테고리의 다른 글
[React] immer를 사용하여 쉽게 데이터 불변성 유지하기 (0) | 2021.04.03 |
---|---|
리액트 컴포넌트 스타일링하는 다양한 방법 (0) | 2021.03.30 |
ESLint와 Prettier로 개발 환경 만들기 (0) | 2021.03.28 |
리액트 컴포넌트를 절대경로로 임포트하는 방법 (0) | 2020.04.06 |
[React/lodash] React에서 debounce 간단 사용방법 (2) | 2020.03.31 |
Comments