-
[React] useTransiton 이란?공부/React 2024. 2. 29. 16:38
1. 정의
- 리액트 18 버전 이후 추가된 기능으로 공식문서에는 useTransiton를 UI를 차단하지 않고
state를 업데이트 할 수 있는 React Hook이라고 설명한다. - 예를 들면 극단적으로 무거운 작업을 할 때 다음 입력을 받지 못할 정도의 프레임 저하가 발생하게되면
유저와 상호작용이 불가하고 좋은경험을 제공할 수 없게된다. - 이런 문제를 해결하기 위해 작업 (state 변화)에 우선순위를 나누고, 우선순위가 높은 이벤트가 발생 시
그 이벤트를 우선처리하고 이후에 우선순위가 낮은 이벤트를 핸들링하여
앞서말한 문제를 해결하는 기능이다. - 즉, state 변화에 우선순위를 부여하는 React Hook이다.
(상태변화를 일으키는 함수의 우선순위를 낮추는 hook) - useTransition은 [isPending, startTransition] 값을 반환한다.
isPending : 상태(state) 업데이트가 지연(Transition)되고 있음을 알려주는 값 ( boolean 타입 )
startTransition : 상태(state) 업데이트를 지연(Transition)시켜주는 함수이다
2. 사용
// 1. useTransition import import { useState ,useTransition} from 'react'; function App () { //2.useTransition 선언 const [isPending,startTransition] = useTransition(); let size_data = ["200px","200px","blue"]; let [value, setValue] = useState('확인용 예제'); let [on,setOff] = useState(true); //3.useTransition 동작 function test () { startTransition(()=>{ setOff(false); }); setValue('변경됐습니다.') } console.log(on ,isPending); console.log(value); return ( <div> { on == false ? <Square size_data={size_data} /> : null } //버튼 클릭 시 확인 <button onClick={()=>{ test(); }}> 테스트 버튼 </button> <div>{value}</div> </div> ); }; function Square (props){ const style = { width: props.size_data[0] , height: props.size_data[1], backgroundColor: props.size_data[2] }; return <div style={style}> 나는야 사각형 </div> } export default App;
- 위 예제 코드를 보면 버튼을 클릭해 test 함수가 동작하면 value값과 on 값의 상태 변화가 발생한다.
- setOff의 경우 startTransition 함수로 래핑되어 상태변화의 우선순위가 낮아져 다른 상태변화 인
setValue가 전부 일어난 후 setOff가 동작하여 사각형이 보이게 된다.
3. 기타
- useTransition()을 사용하면 다른 코드를 먼저 전부 실행한 후 동작하게 만들 수 있다.
- 요약하면 함수의 우선순위를 낮추는 React Hook이라 말할 수 있다.
'공부 > React' 카테고리의 다른 글
[React] Automatic Batching 이란? (0) 2024.02.27 [React] memo, useMemo 란? (1) 2024.02.25 [React] React.lazy 란? (1) 2024.02.25 [React] localStorage 브라우저 데이터 저장 2 (최근 본 상품(페이지) 기록하기) (0) 2024.02.22 [React] 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달하기 (0) 2024.02.22 - 리액트 18 버전 이후 추가된 기능으로 공식문서에는 useTransiton를 UI를 차단하지 않고