[1팀 전명익] [Chapter 1-3] React, Beyond the Basics #51
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
과제 체크포인트
기본과제
심화 과제
과제 셀프회고
이번 과제를 하면서
memo
,useCallback
,useMemo
가 뭔지는 이제야 조금은 알것같습니다..테스트를 통과하기 위해 열심히 문서랑 검색도 해보고, 코드를 수정하면서 '아, 이게 최적화를 위한 거구나' 정도는 깨달았지만, 정확히 어떻게 동작하는지 완벽하게 이해했다고는 못하겠습니다.
그냥 '아, 얘는 이런 상황에서 써야 한다!'는 정도로만 감정도만 잡은 상태인것같습니다.
예를 들어,
memo
를 통해 컴포넌트 리렌더링을 줄이는 건 이해는 했지만,shallowEquals
와deepEquals
를 언제 써야 하는지? 상황에 따라 얕은 비교와 깊은 비교를 어떻게 조합해야 예시를 많이 봐야할것같은 생각이 들었습니다.솔직히 이번 과제는 느낌만 아는 상태로 진행했어요. 물론 다른 과제들도 마찬가지지만 테스트는 통과했지만,
그 과정에서 참으로 부족한 점이 많이 느껴지는 과제였습니다.
기술적 성장
useRef와 useState
useRef
와useState
의 가장 큰 차이점을 알게되었습니다.useState
는 상태를 업데이트할 때마다 컴포넌트가 리렌더링되지만,useRef
는 값 변경만 수행하고 리렌더링을 하지 않죠. 그래서 리렌더링이 필요 없는 부분에서는useRef
를 적극적으로 활용해서 불필요한 렌더링을 줄일 수 있었어요.useMemo와 useCallback
useMemo
와useCallback
은 이번 과제에서 사용하면서 비슷하게 느껴졌지만, 차이점을 심화과제에서 구현하면서 어느정도 느낌을 알게되었습니다..generateItems
처럼 초기값이 큰 데이터를 캐싱하는데 활용했습니다.toggleTheme
같은 이벤트 핸들러 함수에 활용해서 불필요한 함수 재생성 방지하는데 활용했습니다.과제 피드백
AppContext
,ThemeContext
,NotificationContext
를 분리해서 상태를 관리하는 건 해냈지만,Context
가 리렌더링에 미치는 영향에 대해 더 깊이 이해해야 할 것 같아요.다음 목표
memo
,useCallback
,useMemo
를 정확히 이해하기 위해 관련 자료를 더 찾아봐야할것같습니다.