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 ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

import { useTransition } from 'react';

const { isPending, startTransition } =  useTransition();

{ isPending && <Spinner /> }

React 18 ์ด์ „์—๋Š” ๋™์ผํ•œ ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ์„๊นŒ?

  • setTimeout์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ์„ ๋’ค๋กœ ๋ฏธ๋ฃจ๊ฑฐ๋‚˜

  • state๋ฅผ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด debounce๋กœ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋Š” ๋ฐฉ์‹์„ ์ž์ฃผ ์‚ฌ์šฉ

  • ์œ„ ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ฐ€ Schedule ๋˜์–ด ์žˆ๊ณ  ๋’ค๋กœ ๋ฐ€๋ฆฌ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ๊ฐ€ ๋๋‚˜๋„ ๊ณ„์† ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์ถœํ•˜๊ฒŒ ๋จ

    • Transition์€ ๋ณด๋ฅ˜๋˜๋ฉด ์ด์ „ ์ž‘์—…์„ ์ œ๊ฑฐํ•œ๋‹ค.

Last updated