Skip to content

Commit 2267be3

Browse files
authored
Merge pull request #25 from talmood/ymha
[유민] 7장 - 동시성 정리
2 parents f31f62b + 0f1e4f9 commit 2267be3

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

[7장] 리액트 동시성/ymha.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
### 동기식 렌더
2+
- 문제점
3+
- 사용자 경험 저하
4+
- 우선순위 x
5+
- 해결 방법
6+
- 동시성 렌더링 도입 -> 우선순위 도입
7+
8+
### 자바스크립트 이벤트 루프 관리
9+
- 비동기 작업을 관리
10+
- 수행해야할 작업이 있는지 확인
11+
- macrotask queue, microtask queue 에서 기본으로 동작
12+
- macrotask queue
13+
- 이벤트처리, setTimeout 콜백, setInterval 콜백, 입출력 작업 수행 등의 작업 저장
14+
- 한 번에 하나씩 처리
15+
- microtask queue
16+
- 더 작고 즉각적인 작업
17+
- Promise, Object.observe, MutationObserver 에서 발생
18+
- MicroTask Queue 작업 대기열에 저장
19+
- Macro task 보다 먼저 실행됨
20+
- MicroTask 가 있는지 확인 하고, 있으면 MicroTask 모두 실행한 후에 MacroTask 실행
21+
22+
### 렌더 레인
23+
- 렌더링, 우선순위 관리 효율화
24+
- 레인
25+
- 우선순위 수준을 나타내는 단위
26+
- 리액트 18에서 도입
27+
- 우선 순위가 높은 레인이 우선 순위가 낮은 레인보다 먼저 처리된다.
28+
- 레인의 작동방식
29+
1. 컴포넌트 업데이트 or 새 컴포넌트 렌더 트리에 추가
30+
2. 업데이트의 우선순위에 따라 레인을 할당
31+
3. 업데이트 수집
32+
- 우선순위에 따라 각 레인에 할당
33+
5. 레인 처리
34+
- 우선순위가 높은 레인부터 각 레인에 있는 업데이트를 처리, 같은 레인의 업데이트는 한꺼번에 일괄 처리
35+
6. 커밋 단계
36+
- 모든 업데이트 처리 후 변경 사항을 DOM 에 적용, 효과 적용, 기타 마무리 작업 수행
37+
7. 반복
38+
- 업데이트가 항상 우선순위대로 처리되도록 보장
39+
40+
- 레인에 할당하는 과정
41+
1. 업데이트의 콘텍스트 확인
42+
- 업데이트가 발생한 콘텍스트 평가
43+
2. 콘텍스트에 따라 우선순위 추정
44+
3. 우선순위 재정의가 있는지 확인
45+
- useTransition, useDeferredValue 를 사용하여 업데이트 우선순위를 명시적으로 설정한 경우, 추정 순위보다 명시적 우선순위를 사용한다.
46+
4. 올바른 레인에 업데이트 할당
47+
- 비트마스크를 사용하여 레인에 업데이트 할당
48+
49+
- 레인 처리
50+
- 리액트가 우선순위에 따라 업데이트를 처리
51+
- 커밋 단계
52+
- 리액트가 변경사항을 DOM 에 적용, 부작용을 실행, 그 외 마무리 작업 수행

0 commit comments

Comments
 (0)