React 컴포넌트의 불필요한 리렌더링을 줄인 경험
팀 프로젝트에서 리스트 컴포넌트가 데이터가 바뀌지 않았는데도 계속 리렌더링된다는 것을 React DevTools로 확인하였습니다.
원인을 분석해보니 부모 컴포넌트가 렌더링될 때마다 자식에 새 객체를 props로 내려주어 같은 값이어도 참조가 달라지는 문제였습니다. useMemo와 useCallback으로 값을 메모이제이션하였더니 불필요한 리렌더링이 없어졌습니다. 처음에는 모든 컴포넌트에 적용하다가 오히려 코드가 복잡해진 실수가 있었으나, 실제로 느린 곳에만 적용하는 방식이 맞았습니다.
그 경험에서 최적화는 측정 없이 시작하면 오히려 복잡성만 늘어난다는 것을 배웠습니다. 느린 것이 눈에 보이는 곳에만 최적화를 적용하는 것이 원칙이 되었습니다. 그 경험 덕분에 한 단계 성장할 수 있었습니다.