리액트 전용 개발자 도구로 성능 분석이 가능하다.
크롬 확장 프로그램
https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi
F12로 열어보면 Components 탭 / Profiler 탭이 생긴다.
profiler탭에서
1. 왼쪽에 녹화 버튼을 누르고 버튼 동작 후 녹화 중지
2. Ranked를 통해 리렌더링된 컴포넌트를 오래 걸린 순서대로 확인할 수 있다.
👉 컴포넌트 리렌더링 성능을 최적화해 주어야 한다.
React.memo
클래스 컴포넌트에서는 shouldComponentUpdate를 사용하지만,
함수 컴포넌트에서는 React.memo를 사용해야 한다.
: 컴포넌트의 props가 바뀌지 않았다면 리렌더링하지 않도록 설정한다.
export TodoListItem
단순히 컴포넌트를 감싸준다.
export default React.memo(TodoListItem)
useState의 함수형 업데이트 or useReducer 이용
const [state, dispatch] = useReducer(reducer, initialState);
react-virtualized
리스트 컴포넌트에서 스크롤되기 전에 보이지 않는 컴포넌트는 렌더링하지 않고 크기만 차지하게끔 할 수 있다. (자원 절약)
yarn add react-virtualized