초안: 검색 매개변수 성능 최적화
최종 위치: docs/router/framework/react/how-to/optimize-search-param-performance.md
프로그레시브 시리즈 위치: 고급 수준(파워 유저 패턴) - 가이드 #7
종속 항목: setup-basic-search-params.md, navigate-with-search-params.md
상태: 구현 준비 완료 - 성능 패턴을 사용할 수 있습니다.
navigate-with-search-params.md에서 준비한 콘텐츠
함수형 업데이트의 성능 문제
문제: 복잡한 함수형 업데이트로 불필요한 재렌더링이 발생합니다.
// ❌ Wrong - complex computation in render
<Link search={(prev) => {
// Expensive computation on every render
const result = expensiveCalculation(prev)
return { ...prev, computed: result }
}}>
Update
</Link>
// ✅ Correct - memoize or use callback
const updateSearch = useCallback((prev) => {
const result = expensiveCalculation(prev)
return { ...prev, computed: result }
}, [])
<Link search={updateSearch}>Update</Link>
렌더링 중 탐색
문제: 컴포넌트 렌더링 중 navigate를 호출하면 무한 루프가 발생합니다.
function ProblematicComponent() {
const navigate = useNavigate()
// ❌ Wrong - navigate during render
if (someCondition) {
navigate({ search: { redirect: true } })
}
return <div>Content</div>
}
function FixedComponent() {
const navigate = useNavigate()
// ✅ Correct - navigate in effect
useEffect(() => {
if (someCondition) {
navigate({ search: { redirect: true } })
}
}, [someCondition, navigate])
return <div>Content</div>
}
구현 참고 사항
필요한 추가 콘텐츠:
- 불필요한 재렌더링을 방지하는 검색 매개변수 선택자
- 검색 입력 업데이트 디바운싱
- 비용이 큰 검색 계산을 위한 메모이제이션 전략
- 검색 매개변수와 함께 사용하는 React.memo
- 파생 검색 상태를 위한 useMemo 패턴
- 검색 매개변수 배칭 기법
- 검색 매개변수 성능 모니터링 및 프로파일링
- 번들 크기 최적화 전략
추가할 상호 참조:
- 기반 내용은
setup-basic-search-params.md로 연결 - 탐색 패턴은
navigate-with-search-params.md로 연결 - 폼 디바운싱은
search-params-in-forms.md로 연결 - 성능 디버깅은
debug-search-param-issues.md로 이어지는 링크 추가
필요한 README 업데이트:
- 프로그레시브 시리즈에서 가이드를 완료된 것으로 표시
- 관련 가이드에서 "일반적인 다음 단계" 주석 해제