일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 모듈 배포하기
- 회고의 회고
- 인사이드 자바스크립트
- 자바스크립트
- ES6
- 자바스크립트 객체
- 토이프로젝트
- html
- express
- 개인 프로젝트
- 우아한테크코스
- 주간 회고
- 자바
- 함수
- Hello Coding HTML5+CSS3
- 우아한테크캠프 4기
- 알고리즘
- 네이버 테크 콘서트
- 우아한테크캠프
- npm
- 코드스쿼드
- 프로그래머스
- AWS
- 리액트
- 우아한형제들
- toast
- 러닝 자바스크립트
- CSS
- 토이 프로젝트
- 레인지 슬라이더
- Today
- Total
블로그
[TOAST] React.memo() 현명하게 사용하기를 읽고 본문
https://ui.toast.com/weekly-pick/ko_20190731
포스팅을 읽으며, 최근 진행한 미션이 생각났다.
이번에 팀 미션으로 2주간 리액트를 학습하며, 결과물을 만들어야 하는 상황을 맞이했다.
미션과 학습을 함께 진행해야 하는 상황에서 팀원들과 어떻게 진행해야 할 지 회의를 했고, 첫 주는 리액트에 대한 학습만 하기로 결정했다. 투두리스트 자체를 바닐라로 구현했을 때, 시간이 오래 소요되는 미션이 아니니 괜찮겠다는 안일한 마인드도 있었기에 미션 기간의 절반을 통크게 학습 비용으로 설정했다.
하지만 여러 컬럼을 고려해야 하는 상황, 그리고 프론트엔드 끼리 작업하므로 간단한 API를 직접 구축해야 하는 상황(사실 이건 몽고로 CRUD만 구현해서 헤로쿠로 배포했기에 어려운 작업은 아니었다..)이나 드래그 앤 드랍, 협업에 대한 규칙들을 정하는 과정 등 많은 난제들이 산적해있었다.
결국 기능 구현에 급급하여 리렌더링 최적화에 대한 제대로 된 작업을 못했고, 그 결과 많은 케이스에서 불필요한 리렌더링이 발생했다.
그래서 그런지 포스팅을 더 재미있게 읽은 느낌이다!
내가 생각한 요점은 아래와 같다.
1. React.memo는 같은 props임에도 렌더링이 자주 발생하는 상황에 사용하기 좋다.
- 왜? memo는 props가 동일할 때, 성능 최적화를 위해 사용하는 고차 컴포넌트이므로..
2. useState나 useReducer나 useContext등의 상태 관리를 위한 훅을 사용한다면 리렌더링이 발생하게 된다는 점
- 1번과 같은 이유로 memo는 props의 변화에만 영향을 끼치기 때문이다. (state, context는 별개)
3. 부모 컴포넌트에서 콜백 함수를 정의해서 자식 컴포넌트에 콜백 함수를 전달하는 경우
- useCallback을 이용하여 콜백의 인스턴스를 유지해야 한다.
- 그렇지 않다면, 새로 정의된 함수로 인해 리렌더링이 발생하게 된다.
흥미로운 포스팅이었다 ::)
'아티클' 카테고리의 다른 글
[TOAST] 자바스크립트에서 switch (true) 패턴 사용하기를 읽고 (0) | 2021.06.20 |
---|---|
[LINE Engineering] TypeScript enum을 사용하지 않는 게 좋은 이유를 Tree-shaking 관점에서 소개합니다. 를 읽고 (0) | 2021.05.31 |
[TOAST] 더 나은 UX를 위한 React에서 스켈레톤 컴포넌트 만들기를 읽고 (0) | 2021.04.17 |
[우아한형제들] 팀 문화의 탄생을 읽고 (0) | 2021.04.12 |
[토스트] 리액트 useEffect: 개발자가 알아야 할 네가지 팁을 읽고 (0) | 2021.04.08 |