useTransition 알아보기

2024. 8. 16. 17:58·Stack/React
반응형

useTransition이란?

useTransition은 React 18에서 추가된 기능으로 사용자 인터페이스(UI)에서 느린 업데이트를 처리하는 데 사용되는 훅이다.

사용자가 어떤 작업을 수행했을 때, 이 작업이 완료되기 전까지 UI를 즉시 업데이트하는 대신, 이 작업을 '비동기'로 처리하고, 사용자에게 이 작업이 진행 중임을 알려주는 역할을 한다.

useTranstion의 형태

const [isPending, startTransition] = useTransition();

useTransition을 사용하면 UI의 응답성을 높이고, 느린 작업이 전체 UI를 블록하는 것을 방지할 수 있다.

코드로 알아보기

문제가 되는 코드

'use client';

import { ChangeEvent, useState } from 'react';

const UseTransitionEx = () => {
  const [text, setText] = useState('');

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    setText(e.target.value);
  };

  return (
    <div>
      <input type="text" onChange={handleChange} />
      <p>{text}</p>
    </div>
  );
};

export default UseTransitionEx;

위의 코드처럼 useTransition을 사용하지 않고 setText를 직접 호출하게 되면, 입력이 매우 빠르게 이루어질 경우 UI가 순간적으로 느려질 수 있다.

만약 setText 말고도, 다른 복잡하거나 무거운 작업이 있을 경우 문제가 발생할 수 있다.

이런 문제가 발생할 때 useTransition을 사용하여 문제를 해결한다.

useTransiton 사용할 경우

'use client';

import { useState, useTransition } from 'react';

const UseTransitionEx = () => {
  const [text, setText] = useState('');
  const [isPending, startTransition] = useTransition();

  const handleChange = (e) => {
    startTransition(() => {
      setText(e.target.value);
    });
  };

  return (
    <div>
      <input type="text" onChange={handleChange} />
      {isPending ? <p>로딩 중...</p> : <p>{text}</p>}
    </div>
  );
};

export default UseTransitionEx;

부분으로 살펴보기

const [isPending, startTransition] = useTransition();
  • isPending: 현재 트랜지션 상태가 진행 중인지를 나타내는 boolean 값이다.
    트랜지션이 시작되면 isPending은 true가 되고, 트랜지션이 완료되면 false로 변경된다.
  • startTransition: 트랜지션을 시작하는 역할을 한다.. startTransition 안에 트랜지션으로 처리하고 싶은 상태 변경 작업을 포함하면, React는 이 작업을 낮은 우선순위로 처리한다.
const handleChange = (e) => {
  startTransition(() => {
    setText(e.target.value);
  });
};
  • startTransition 함수를 사용하여 setText 함수를 트랜지션으로 감싸서, 텍스트 입력에 대한 상태 변경이 발생할 때 React가 이 작업을 낮은 우선순위로 처리하게한다.
{
  isPending ? <p>로딩 중...</p> : <p>{text}</p>;
}
  • isPending이 true라면, 트랜지션이 진행 중임을 표시한다.

결론

useTransition을 사용함으로써 React는 이 작업을 낮은 우선순위로 처리하여 UI의 반응성을 유지하면서, 복잡하거나 무거운 작업이 동시에 발생하더라도 UI가 느려지는 문제를 완화한다.

반응형

'Stack > React' 카테고리의 다른 글

useDefferdValue 알아보기  (0) 2024.08.16
useId 알아보기  (0) 2024.08.16
useReducer 알아보기  (0) 2024.08.12
useLayoutEffect 에 대해 알아보기  (2) 2024.08.12
useCallback 이란?  (0) 2024.08.07
'Stack/React' 카테고리의 다른 글
  • useDefferdValue 알아보기
  • useId 알아보기
  • useReducer 알아보기
  • useLayoutEffect 에 대해 알아보기
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
    반응형
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (119)
      • Stack (43)
        • Next.js (7)
        • React (12)
        • React-Native (15)
        • TypeScript (0)
        • Python (2)
        • JavaScript (2)
        • Android (1)
        • DB (2)
        • JAVA (1)
      • Obsidian (1)
      • AI (3)
      • AI Tools (0)
      • Tools (0)
      • Mac (0)
      • Error (7)
      • 알고리즘 정리 (6)
      • 알고리즘 문제풀이 (46)
      • 공부일상 (4)
      • 개발 도구 & 라이브러리 (0)
      • 정보처리기사 (0)
      • 기타 (6)
      • Tip (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    알고리즘
    React-Native cli
    리액트네이티브
    프로그래머스
    reactnative
    코테
    boj
    java
    오블완
    D2
    코테준비
    react-native
    Expo
    백준
    티스토리챌린지
    javascript
    mongoDB Atlas
    error
    hooks
    Next.js
    react-native-maps
    ReactHook
    d1
    코딩테스트
    SWEA
    React Hooks
    mongodb cloud
    ios
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
useTransition 알아보기
상단으로

티스토리툴바