일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- System Design
- Logrus
- Kubernetes
- gitops
- go
- intellij ide
- golang
- 대규모 시스템 설계
- Helm V3
- goland
- Bastion Server
- http 413
- AWS Infra
- 컴포지트패턴
- Intellij
- 윈도우키보드
- Golines
- 배포 프로세스
- apollo router
- 디자인패턴
- Infra
- notification system
- GoF
- UnBuffered channel
- Buffered channel
- AWS
- tenneling
- body size
- GoF 디자인패턴
- 배포 파이프라인
Archives
- Today
- Total
Fall in IT.
[React] immer를 사용하여 쉽게 데이터 불변성 유지하기 본문
안녕하세요.
오늘은 immer 라이브러리를 사용하여 쉽게 데이터의 불변성을 유지하는 방법에 대해서 알아보겠습니다.
데이터 불변성의 중요성
- 리액트 컴포넌트에서 상태를 업데이트할때 불변성을 지키는 것은 매우 중요하다.
- 리액트에서는 React.memo를 사용했을때 props가 바뀌었는지 혹은 바뀌지 않았는지를 알아내서 리렌더링 성능을 최적화해줄수있다.
- 불병성이 지켜지지 않는다면 React.memo와 같은 최적화는 불가능하다
immer가 꼭 필요한가?
- 반드시 필요하진 않다. 전개 연산자와 배열의 내장함수를 사용하면 쉽게 새로운 값을 만들 수 있다.
- 하지만 객체 구조가 깊어질수록 불변성을 유지하면서 업데이트하는것은 힘들어진다.
- 컴포넌트의 상태 업데이트가 까다로울때 immer 라이브러리를 사용하면 좋다.
// 사용 전
const onChange = useCallback(event => {
const { name, value } = event.target
setForm({
...form,
[name]: value
})
}, [form]);
// 사용 후 - 객체 구조가 깊어질수록 쉽게 데이터를 생성할 수 있다.
import produce from 'immer';
const onChange = useCallback(event => {
const { name, value } = event.target
setForm(
produce(draft => {
draft[name] = value
})
)
}, [form]);
참조
'프레임워크 > React' 카테고리의 다른 글
[React] Context API 알아보기 (0) | 2021.04.05 |
---|---|
리액트 컴포넌트 스타일링하는 다양한 방법 (0) | 2021.03.30 |
ESLint와 Prettier로 개발 환경 만들기 (0) | 2021.03.28 |
리액트 컴포넌트를 절대경로로 임포트하는 방법 (0) | 2020.04.06 |
[React/lodash] React에서 debounce 간단 사용방법 (2) | 2020.03.31 |
Comments