[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# [[무거운 데이터 리스트 필터링 구현]]
|
||||
|
||||
## 📌 Brief Summary
|
||||
무거운 데이터 리스트 필터링 구현은 수백 개에서 수만 개의 항목을 포함하는 대규모 데이터셋을 화면에서 필터링할 때 발생하는 렌더링 지연 및 UI 멈춤 현상을 해결하는 기술입니다 [1-4]. React 19의 동시성 렌더링(Concurrent rendering) 훅을 사용하여 무거운 연산의 렌더링 우선순위를 낮추거나, 화면에 보이는 노드만 렌더링하는 가상화 기법을 적용함으로써 사용자의 입력 지연 없이 즉각적인 반응성을 유지하는 것을 목적으로 합니다 [3, 5, 6].
|
||||
## 📌[[ brief]] Summary
|
||||
무거운 데이터 리스트 필터링 구현은 수백 개에서 수만 개의 항목을 포함하는 대규모 데이터셋을 화면에서 필터링할 때 발생하는 렌더링 지연 및 UI 멈춤 현상을 해결하는 기술입니다 [1-4]. [[React 19]]의 동시성 렌더링([[Concurrent Rendering]]) 훅을 사용하여 무거운 연산의 렌더링 우선순위를 낮추거나, 화면에 보이는 노드만 렌더링하는 가상화 기법을 적용함으로써 사용자의 입력 지연 없이 즉각적인 반응성을 유지하는 것을 목적으로 합니다 [3, 5, 6].
|
||||
|
||||
## 📖 Core Content
|
||||
* **동시성 기능(Concurrent Features)을 활용한 UI 응답성 유지**
|
||||
* `useTransition` 훅: 타이핑이나 클릭과 같은 긴급한 사용자 상호작용과 리스트 필터링이라는 비긴급 상태 업데이트를 분리합니다 [5]. 무거운 필터링 연산이 백그라운드에서 실행되는 동안 사용자의 키보드 입력이 즉각적으로 반응하도록 보장하며, `isPending` 플래그를 통해 진행 상태에 대한 시각적 피드백을 제공할 수 있습니다 [2].
|
||||
* `useDeferredValue` 훅: 부모 컴포넌트의 props나 외부 스토어 등 상태 업데이트 코드를 직접 제어할 수 없을 때 사용합니다 [2, 3]. 새로운 필터링 결과가 준비될 때까지 UI 프리징 없이 이전 결과를 유지하며, `useMemo`와 결합하면 10,000개 이상의 항목 리스트도 지연 느낌 없이 처리할 수 있습니다 [3].
|
||||
* `[[useTransition]]` 훅: 타이핑이나 클릭과 같은 긴급한 사용자 상호작용과 리스트 필터링이라는 비긴급 상태 업데이트를 분리합니다 [5]. 무거운 필터링 연산이 백그라운드에서 실행되는 동안 사용자의 키보드 입력이 즉각적으로 반응하도록 보장하며, `isPending` 플래그를 통해 진행 상태에 대한 시각적 피드백을 제공할 수 있습니다 [2].
|
||||
* `[[useDeferredValue]]` 훅: 부모 컴포넌트의 props나 외부 스토어 등 상태 업데이트 코드를 직접 제어할 수 없을 때 사용합니다 [2, 3]. 새로운 필터링 결과가 준비될 때까지 UI 프리징 없이 이전 결과를 유지하며, `useMemo`와 결합하면 10,000개 이상의 항목 리스트도 지연 느낌 없이 처리할 수 있습니다 [3].
|
||||
* **리스트 가상화(Virtualization) 적용**
|
||||
* 수백 또는 수천 개의 항목이 있는 리스트를 렌더링할 때 모든 DOM 노드를 생성하면 초기 렌더링 시간과 상호작용 반응성에 악영향을 미칩니다 [4].
|
||||
* 가상화 기술(예: `react-window` 라이브러리)을 사용하면 현재 화면(Viewport)에 보이는 항목과 그 상하의 작은 버퍼 영역만을 DOM 노드로 렌더링할 수 있습니다 [6].
|
||||
|
||||
Reference in New Issue
Block a user