useCallback 과 React.memo 의 사용 기준
827
작성한 질문수 18
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨
질문 하시기 전에 꼭 확인해주세요
- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)
- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)
- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)
질문 하실때 꼭 확인하세요
- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)
- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)
- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)
- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요
- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
초심자의 입장에서 사실 저러한 기능을 보면 그냥 처음에 만들때는 useCallback, React.memo 를 다 써보고 나중에 문제 생기면 그때 바꿔쓰면 되지 않나? 라는 생각이 듭니다.
마치 평소에는 const 로 다 만들고, 해보다가 let 으로 변경이 필요하다 싶으면 let 으로 바꾸는 것처럼요.
이걸 어떤 기준을 잡고 사용해야 할까요? 정확한 기준이 있는지도 궁금합니다. 렌더링 되는데 걸리는 시간이 몇 초 이상일시 변경한다거나 하는 기준이 있을까요?
답변 1
1
안녕하세요 이정환입니다.
엄청 좋은 질문 주셨네요 감사해요 🙇♂️🙇♂️🙇♂️
우선 useCallback 이나 useMemo, React.memo 와 같은 렌더링 최적화 기능에도 당연 비용이 있기 마련입니다. 따라서 어떤 상황에나 무조건 유익하다고 볼 수는 없습니다.
또 useCallback이나 useMemo 등으로 최적화 해 둔 함수나 컴포넌트는 잦은 수정이 발생하는 초기 및 중기 개발 단계에서는 오히려 구조의 변경을 어렵고 어지럽게 할 가능성이 있어 대부분 프로젝트를 전부 마무리 하고 나서 배포 직전 최후 단계에 수행하곤 합니다. 또는 특정 컴포넌트나 모듈이 이제 최종적으로 더 이상 수정되지 않을 것 같다면 그때 하곤 하죠
그러므로 저는 개인적으로 최적화를 적용하지 않고 원하는 기능을 동작시키도록 먼저 개발한 다음 최종적으로 최적화를 적용하며 코드를 부분적으로 리팩토링 하는 방식을 권장드립니다.
혹시나 도움이 되실 까봐 제가 감명깊게 읽었던 좋은 아티클을 소개해드립니다. 함께 읽어보시면 정말 좋을 것 같아요
[ 아티클 : 언제 useMemo와 useCallback을 사용해야 할까? ]
원문 : https://kentcdodds.com/blog/usememo-and-usecallback
번역 : https://goongoguma.github.io/2021/04/26/When-to-useMemo-and-useCallback/
useEffect와 lifecycle문의
0
36
2
프론트엔드 학습 수준 문의
0
49
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
53
2
데이터 로딩중 화면만 계속 나와요!!
0
57
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
85
2
이후의 커리큘럼 문의
0
104
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
53
2
최적화 관련 질문있습니다 (useMemo 등)
0
86
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
82
3
Date 객체에 관련하여 질문드립니다.
0
87
2
리액트 개정판 교재 질문
0
60
2
예제코드가 안나와요!
0
78
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
110
2
onMouseEnter 관련 문의 드립니다
0
93
3
배열의 렌더링 관련 질문 드립니다.
0
73
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
114
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
138
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
71
1
vs code 자동완성관련 문의
0
120
2
91강 useEffect내에서 상태변화함수 호출시 발생하는 에러
1
186
2
87강 필터 함수 질문
0
71
2
useRef, useState count 비교
0
67
2
안된다고했던 이유가 무엇이었는지 모르겠습니다
0
92
2
85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.
0
77
2





