리액트가 상태에 대한 갱신을 어떻게 하는 지
Scheduled State Change 상태 갱신 예약
즉 동시에 여러 번의 갱신이 스케줄될 수 있으므로 상태를 갱신할 때는 함수 형태를 이용해서 갱신하는 것을 추천한다
이전 상태의 스냅샷에 의존해야 하는 경우는 특히 그렇다
함수 형태를 사용해야 리액트가 미완료된 상태 변경 작업에 대하여 최신의 상태를 사용하고 컴포넌트가 재 렌더링되었을 그 시점의 상태를 사용하지 않게 된다
컴포넌트가 재 렌더링되었을 때의 시점과 상태 변경이 예약되는 시점의 차이를 아는 것은 매우 중요하다
이렇게 함수를 호출한다고 이 바로 다음 행에서 상태가 갱신되는 것은 아니라고 이미 배웠다
상태는 이 위치에서 갱신되지 않고 갱신 예악이 된 뒤 컴포넌트가 다시 실행된다
이 경우에 컴포넌트가 다시 실행되고 나서야 사용 가능한 최신 상태가 됩니다. 그 전에는 아니다.
즉 같은 함수가 서로 다른 프로미스에 있지 않고 같은 곳에 존재한다면 이 둘 사이에 시간 지연과 같은 현상은 발생하지 않는다.
예를 들어서, 하나의 함수가 처음부터 끝까지 어떠한 콜백이나 프로미스 없이 실행된다면 이럴 때 리액트는 이 함수로부터 발생하는 모든 상태 갱신 작업을 하나의 상태 갱신 작업으로 처리한다
하나의 함수 안에서 아예 다른 것으로 업데이트를 한다면 두 개의 상태를 변경하는 하나의 상태 변경 작업 스케줄이 존재하게 된다. 이는 단 하나의 프로세스만을 가지며 컴포넌트의 재실행, 재평가로 인한 2번의 변경 작업이 아니고 함수 내의 모든 상태 변경을 하나의 작업으로 결합해 놓은 스케줄이다
'온라인 강의 > React 완벽 가이드 [Udemy]' 카테고리의 다른 글
171. 모듈 리소스 (0) | 2023.06.27 |
---|---|
170. useMemo()로 최적화하기 (0) | 2023.06.27 |
168. State 및 컴포넌트 자세히 살펴보기 (0) | 2023.06.27 |
167. 첫 번째 요약 (0) | 2023.06.27 |
166. useCallback() 및 해당 종속성 ** (0) | 2023.06.27 |