| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- Intellij
- blank import
- golang
- sqs fifo queue
- 캡슐화
- context7
- 디자인패턴
- AWS
- go
- 오블완
- goland
- replication lag
- RDS
- typescript
- database/sql
- GIT
- 티스토리챌린지
- go-sql-driver
- javascript
- 구조체
- MSA
- logging
- Infra
- esbuild
- 관측 가능성
- Kubernetes
- 통합 로깅 시스템
- elasticsearch
- GoF
- AI
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 알아보기 (1) | 2021.04.05 |
|---|---|
| 리액트 컴포넌트 스타일링하는 다양한 방법 (0) | 2021.03.30 |
| ESLint와 Prettier로 개발 환경 만들기 (0) | 2021.03.28 |
| 리액트 컴포넌트를 절대경로로 임포트하는 방법 (0) | 2020.04.06 |
| [React/lodash] React에서 debounce 간단 사용방법 (3) | 2020.03.31 |
Comments