Transition
Transition
앱의 업데이트 중에 응답성을 유지하는데 도움을 주는 v18에 새롭게 추가된 API
특정 업데이트를 "Transition"을 표시하여 사용자 인터렉션을 크게 향상시킬 수 있다.
상태 전환 중에 시각적 피드백을 제공하고 전환하는 동안 브라우저 응답성을 유지할 수 있다.
리엑트에게 어떤 업데이트가 긴급한지(urgent) 아닌지(transition)를 알려주어 업데이트의 우선순위를 정할 수 있게 된다.
import { startTransition } from 'react';
// urgent update → 기존 사용하는 방식 그대로
setInputValue(value);
// transition update
startTransition(() => {
setSearchResult(value)
})startTransition()으로 래핑된 업데이트는 긴급하지 않은것으로 처리되며 다른 긴급한 업데이트가 호출되면 작업을 중단한다.transition 업데이트가 보류되면 완료되지 않은 오래된 렌더링 작업을 날리고 최신 업데이트만 렌더링한다.
Transition을 사용했을 때 UI가 크게 변경되더라도 대부분의 상호작용을 빠르게 유지 가능하다.
더이상 관련없는 컨텐츠를 렌더링하는데 시간을 낭비하지 않게 된다.
보류 중인 Transition update
우선순위가 밀려 보류 중인 업데이트는
isPending플래그를 통해 상태를 확인할 수 있다.
React 18 이전에는 동일한 작업을 어떻게 처리했을까?
setTimeout을 사용하여 호출을 뒤로 미루거나
state를 두개로 나누어 debounce로 업데이트 주기를 다르게 가져가는 방식을 자주 사용
위 두 방식 모두 이벤트 처리가 Schedule 되어 있고 뒤로 밀리는 것이기 때문에 이벤트가 끝나도 계속 결과를 표출하게 됨
Transition은 보류되면 이전 작업을 제거한다.
Last updated