Kimsoraโœจ
article thumbnail
320x100
๋ฐ˜์‘ํ˜•

 ๐Ÿงฉ์งง์€ ์‹œ๊ฐ„์— ์œ ์ € ์ž…๋ ฅ ๋“ฑ์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋งŽ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ํ™”๋ฉด์ด ๋Š๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋•Œ useDeferredValue& useTransition ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์™„์„ ํ• ์ˆ˜ ์žˆ๋‹ค

 

 

 

useTransition

useTransition  ํŠน์ • ์ƒํƒœ ์—…๋ฐ์ดํŠธ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค 

React state๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ํŠธ๋žœ์ง€์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋„์™€์ค€๋‹ค

์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์„ ์Šคํฌ๋กคํ•˜๊ฑฐ๋‚˜, ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด, ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๊ธฐ ์ „์— ๊ธฐ์กด  ํŽ˜์ด์ง€ ์ „ํ™˜์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค

=> ๋‹ค๋ฅธ ๋ชจ๋“  ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋˜๋Š” UI ๋ Œ๋”๋ง ํŠธ๋ฆฌ๊ฑฐ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์Œ

๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ ์—์„œ ์ผ์‹œ์ ์œผ๋กœ UI๋ฅผ ์ง€์—ฐ์‹œ์ผœ ๋กœ๋”ฉ ์ค‘์ž„์„ ์•Œ๋ฆฌ๊ณ , ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

const [isPending, startTransition] = useTransition();

isPending๋Š” ํ˜„์žฌ ํŠธ๋žœ์ง€์…˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์•„์ง ๋ณด๋ฅ˜ ์ค‘ ์ธ์ง€์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ค„ ๋•Œ startTransition์€ ํŠธ๋žœ์ง€์…˜์„ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜

startTransition ํ•จ์ˆ˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ์‹คํ–‰ํ•˜๋ฉฐ, ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

useDeferredValue

 ์ฝ”๋“œ๋ฅผ ๋ž˜ํ•‘ํ•˜๊ณ  ๋‚ฎ์€ ์šฐ์„  ์ˆœ์œ„๋กœ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ ์™„์ „ํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅ

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ์„ ํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰์ฐฝ์— ์ž…๋ ฅ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” API ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด, ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ๊ฒฝ์šฐ useDeferredValue๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ API๋ฅผ ํ˜ธ์ถœํ•˜๋„๋กํ•œ๋‹ค

=>useMemo์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ด์ „ ๊ฐ’์„ ๊ณ„์† ๋“ค๊ณ  ์žˆ์œผ๋ฉด์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์—ฐ ์‹œํ‚จ๋‹ค

 

 

๋ฏธ์ ์šฉ์‹œ

import { useState } from "react";
import classes from "./ex.module.css";
function Ex() {
  const [name, setName] = useState("");
  let array = new Array(10000).fill(0);
  return (
    <div>
      <input
        className={classes.i}
        onChange={(e) => {
          setName(e.target.value);
        }}
      />
      {array.map((_, idx) => {
        return (
          <div className={classes.a} key={idx}>
            {name}
          </div>
        );
      })}
    </div>
  );
}
export default Ex;

 

useDeferredValue& useTransition์ ์šฉ

import { useState, useTransition, useDeferredValue } from "react";
import classes from "./ex.module.css";
function Ex() {
  const [name, setName] = useState("");
  const [isPending, startTransition] = useTransition();
  let array = new Array(10000).fill(0);
  let ๋Šฆ๊ฒŒ์ฒ˜๋ฆฌํ• ๊ฑฐ_๋‹ด๊ธฐ = useDeferredValue(name);
  return (
    <div>
      <input
        className={classes.i}
        onChange={(e) => {
          startTransition(() => {
            setName(e.target.value);
          });
        }}
      />
      {isPending
        ? "๋กœ๋”ฉ์ค‘์ž…๋‹ˆ๋‹ค...."
        : array.map((_, idx) => {
            return (
              <div className={classes.a} key={idx}>
                {๋Šฆ๊ฒŒ์ฒ˜๋ฆฌํ• ๊ฑฐ_๋‹ด๊ธฐ}
              </div>
            );
          })}
    </div>
  );
}
export default Ex;

์‹œ์ž‘ ์‹œ์ ์„ ๋’ค๋กœ ๋ฏธ๋ฃฐ ์ˆ˜ ์žˆ๋‹ค!

useDeferredValue๋Š” ์ž…๋ ฅ์„ ์ง€์—ฐ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๊ณ , useTransition์€ ํ™”๋ฉด ์ „ํ™˜์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

 

 

๐Ÿ“Œ๊ธฐ์กด์— ๋””๋ฐ”์šด์‹ฑ, ์Šค๋กœํ‹€๋ง์˜ ์‚ฌ์šฉ์‹œ ์• ๋งคํ•œ์ฒ˜๋ฆฌ?(๋””๋ฐ”์šด์‹ฑ๊ณผ ์Šค๋กœํ‹€๋ง์—์„œ ์ ์ ˆํ•œ ๋”œ๋ ˆ์ด๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ์–ด๋ ต๋‹ค )์šฐํšŒํ•˜๋˜ ๋ฌธ์ œ๋ฅผ react hooks api ๋กœ ์ง์ ‘ ํ•ด๊ฒฐํ• ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค

 

728x90
๋ฐ˜์‘ํ˜•
profile

Kimsoraโœจ

@sorarar

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!

๊ฒ€์ƒ‰ ํƒœ๊ทธ

WH