가수면
프로젝트 마무리는 어디로... 본문
원래 진작에 리팩토링이 다 끝났어야 했을 터다.
팀원들을 기다리는 사이 내 파트에 대한 리팩토링은 1차적으로 이미 끝낸 상태지만, 프로젝트 전체 컴포넌트에 대한 리팩토링은 아직 이루어지지 않은 상태.
이젠 기한이 진짜 얼마 남지 않아 내일부터는 어쩔 수 없이 혼자서라도 컴포넌트 다 쪼개는 작업을 들어가야 한다.
이번 주 한 작업
- 달력 로직 메모라이징 작업 및 렌더링 최적화
- 자주 쓰이는 함수에 대한 리팩토링
- input 컴포넌트화
- 프로젝트 오류 수정
- 유저 테스트 피드백 반영
트러블 슈팅
- useMemo, useCallback, React.memo -
최적화를 위해 공부하는 과정에서 위의 훅들을 너무 무분별하게 쓰고 있었다는 것을 깨닫고 공부하기 시작함.
어떨 때 사용해야하고 어떻게 써야 적절하게 사용하는 건지 공부 전에는 막연하기만 했었는데, 하다보니 아직 완벽하게 알았다고는 못 하겠지만, 감은 잡히고 있는 상태다.
useMemo - 의존성 배열이 바뀌지 않은 한 계산된 값을 재사용.
useCallback - 의존성 배열이 바뀌지 않은 한 함수를 새로 만들지 않고 재사용
props가 바뀐다 거나 상태값의 변화 등으로 인해 렌더링이 일어나면 다시금 코드들이 순서대로 읽히는데 그 과정을 생략해주는 개념들이었다.
실제로 제대로 적용이 되면 안에 콘솔이 있어도 읽히지 않는다.
그리고 추가로 useState 훅을 사용할 때 setState에 특정값을 직접 넣지 않고, 함수형 업데이트를 사용할 수 있는 경우, 그렇게 해주면 의존성 배열에서 그 값을 빼줄 수 있게되고, 따라서 렌더링을 막을 수 있게 된다.
다음으로,
React.memo - 불필요한 렌더링을 막아준다.
사실 아직 정확히 어떤 조건에서 써야하는 건지 헷갈리는 부분이다.
그래서 아직은 React DevTools이라는 확장 프로그램을 이용해 React.memo를 적용해서 렌더링이 안 일어나면 적용하고, 적용해봐도 렌더링이 일어나는 것들엔 적용하지 않는 방식으로 작업을 하고 있는데, 좀 더 파고들어가 볼 필요가 있을 것 같다.
'일지' 카테고리의 다른 글
실전 프로젝트 회고 (0) | 2023.02.13 |
---|---|
쓰곰그리곰 프로젝트 최적화 작업 (0) | 2023.02.11 |
전역 상태 관리 Redux Vs React Query (0) | 2023.02.02 |
기능 마무리 (0) | 2023.01.29 |
컴파운드 패턴 모달 적용기 (0) | 2023.01.27 |