React에서 가장 오래 걸렸던 개념은 무엇인가요?
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
프론트엔드 개발자 및 React 초보자 (중간 난이도)
핵심 요약
useEffect
의존성 배열 문제 – 잘못 설정 시 무한 루프 또는 업데이트 누락 발생- 상위 상태 관리 (Lifting State Up) – 컴포넌트 간 데이터 공유 시 복잡성 증가
- 재렌더링 성능 최적화 – 대규모 컴포넌트에서 성능 저하 및 메모리 문제 발생
섹션별 세부 요약
1. useEffect 의존성 배열 문제
useEffect
에서 의존성 배열을 잘못 설정하면 컴포넌트가 예상치 못하게 재렌더링되거나 상태가 업데이트되지 않을 수 있음useEffect
의 두 번째 인자로 의존성 배열을 명시하고,useCallback
이나useRef
를 활용해 불필요한 재렌더링 방지
2. 상태 상위 전달 (Lifting State Up)
- 자식 컴포넌트에서 상태를 관리하는 대신 부모 컴포넌트로 상태를 올리는 방식이 초기에 이해가 어려웠음
- 상위 상태 관리 시
props drilling
으로 인한 코드 복잡성 증가,Context API
또는Redux
사용 권장
3. 재렌더링 성능 문제
- 대규모 컴포넌트에서
useEffect
또는useState
호출이 과도하게 발생해 성능 저하 React.memo
,useMemo
,useCallback
을 활용해 불필요한 재렌더링 방지 및 메모리 최적화
결론
useEffect
의존성 배열을 신중하게 설정하고,React.memo
/useMemo
를 통해 성능 최적화- 상태 관리 시
Context API
또는 상태 관리 라이브러리(예: Redux) 사용 - 성능 문제 발생 시
React Developer Tools
의 성능 탭으로 메모리 사용량 및 렌더링 트리 분석하여 원인 파악