Reactμ useTransition ν μ νμν΄ λ³΄μΈμ. λ ΌλΈλ‘νΉ UI μ λ°μ΄νΈλ₯Ό κ΄λ¦¬νκ³ λ λΆλλ½κ³ λ°μμ± μ’μ μ¬μ©μ κ²½νμ λ§λλ κ°λ ₯ν λꡬμ λλ€. μ λ°μ΄νΈ μ°μ μμλ₯Ό μ νκ³ UI λ©μΆ€ νμμ λ°©μ§νλ λ°©λ²μ λ°°μ°μΈμ.
React useTransition: μνν μ¬μ©μ κ²½νμ μν UI μ λ°μ΄νΈ κ°μν
νλ μΉ κ°λ°μμ λΉ λ₯΄κ³ λ°μμ±μ΄ λ°μ΄λ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό μ 곡νλ κ²μ λ§€μ° μ€μν©λλ€. μ¬μ©μλ 볡μ‘ν λ°μ΄ν° μ
λ°μ΄νΈλ λ¬΄κ±°μ΄ κ³μ°μ μ²λ¦¬ν λμλ μ¦κ°μ μΈ νΌλλ°±κ³Ό λΆλλ¬μ΄ μ νμ κΈ°λν©λλ€. Reactμ useTransition
ν
μ μ΄λ₯Ό λ¬μ±νκΈ° μν κ°λ ₯ν λ©μ»€λμ¦μ μ 곡νμ¬, μ ν리μΌμ΄μ
μ΄ λΉ λ₯΄κ³ λ°μμ± μκ² λκ»΄μ§λλ‘ νλ λ
ΌλΈλ‘νΉ UI μ
λ°μ΄νΈλ₯Ό κ°λ₯νκ² ν©λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ useTransition
μ κΉμ΄ νκ³ λ€μ΄ κ·Έ μ΄μ , μ¬μ© μ¬λ‘ λ° μ€μ ꡬνμ λν΄ νμν©λλ€.
λ¬Έμ μ΄ν΄νκΈ°: λΈλ‘νΉ UI μ λ°μ΄νΈ
useTransition
μ λν΄ μμ보기 μ μ, μ΄κ²μ΄ ν΄κ²°νλ κ³Όμ λ₯Ό μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. κΈ°λ³Έμ μΌλ‘ React μ
λ°μ΄νΈλ λκΈ°μ μ
λλ€. μν μ
λ°μ΄νΈκ° νΈλ¦¬κ±°λλ©΄ Reactλ μ¦μ μν₯μ λ°λ μ»΄ν¬λνΈλ₯Ό λ€μ λ λλ§ν©λλ€. λ§μ½ μ¬λ λλ§ κ³Όμ μ΄ κ³μ°μ μΌλ‘ λΉμΈλ€λ©΄(μ: λκ·λͺ¨ λ°μ΄ν°μ
νν°λ§, 볡μ‘ν κ³μ° μν), λ©μΈ μ€λ λλ₯Ό μ°¨λ¨νμ¬ UIκ° λ©μΆκ±°λ μλ΅νμ§ μκ² λ§λ€ μ μμ΅λλ€. μ΄λ μ’
μ’
"μν¬(jank)"λΌκ³ λΆλ¦¬λ μ’μ§ μμ μ¬μ©μ κ²½νμΌλ‘ μ΄μ΄μ§λλ€.
λκ·λͺ¨ μν λͺ©λ‘μ νν°λ§νλ κ²μ μ λ ₯ νλκ° μλ μλ리μ€λ₯Ό μκ°ν΄ 보μΈμ. λͺ¨λ ν€ μ λ ₯μ μν μ λ°μ΄νΈμ μν λͺ©λ‘μ μ¬λ λλ§μ νΈλ¦¬κ±°ν©λλ€. μ μ ν μ΅μ νκ° μλ€λ©΄ νν°λ§ κ³Όμ μ΄ λλ €μ Έ μ¬μ©μλ λμ λλ μ§μ°κ³Ό λ΅λ΅ν κ²½νμ νκ² λ μ μμ΅λλ€.
useTransition μκ°: λ ΌλΈλ‘νΉ μ λ°μ΄νΈκ° λ΅μ΄λ€
React 18μ λμ
λ useTransition
ν
μ νΉμ μν μ
λ°μ΄νΈλ₯Ό νΈλμ§μ
(transition)μΌλ‘ νμν μ μκ² νμ¬ μ΄ λ¬Έμ μ λν ν΄κ²°μ±
μ μ 곡ν©λλ€. νΈλμ§μ
μ μ§μ μ μΈ μ¬μ©μ μνΈμμ©κ³Ό κ°μ λ€λ₯Έ μ
λ°μ΄νΈλ³΄λ€ λ κΈ΄κΈν κ²μΌλ‘ κ°μ£Όλ©λλ€. Reactλ νΈλμ§μ
λ³΄λ€ κΈ΄κΈν μ
λ°μ΄νΈ(μ: μ
λ ₯ νλμ νμ΄ν)λ₯Ό μ°μ μνμ¬ UIκ° κ³μ λ°μμ±μ μ μ§νλλ‘ λ³΄μ₯ν©λλ€.
useTransition
μ μλ λ°©μμ λ€μκ³Ό κ°μ΅λλ€:
- ν
κ°μ Έμ€κΈ°:
import { useTransition } from 'react';
- ν
νΈμΆνκΈ°:
const [isPending, startTransition] = useTransition();
isPending
: νΈλμ§μ μ΄ νμ¬ μ§ν μ€μΈμ§ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λλ€. λ‘λ© νμκΈ°λ₯Ό νμνλ λ° μ μ©ν©λλ€.startTransition
: νΈλμ§μ μΌλ‘ νμνλ €λ μν μ λ°μ΄νΈλ₯Ό κ°μΈλ ν¨μμ λλ€.
- μν μ
λ°μ΄νΈ κ°μΈκΈ°: λΉμ©μ΄ λ§μ΄ λ€ μ μλ μ¬λ λλ§μ νΈλ¦¬κ±°νλ μν μ
λ°μ΄νΈ ν¨μλ₯Ό
startTransition
μΌλ‘ κ°μΈμΈμ.
μμ : λκ·λͺ¨ λ°μ΄ν°μ νν°λ§νκΈ°
κ²μ μ
λ ₯ μμ λ‘ λμκ° useTransition
μ΄ μ΄λ»κ² μ±λ₯μ ν₯μμν¬ μ μλμ§ μ΄ν΄λ³΄κ² μ΅λλ€.
import React, { useState, useTransition, useMemo } from 'react';
const ProductList = ({ products }) => {
const [query, setQuery] = useState('');
const [isPending, startTransition] = useTransition();
const filteredProducts = useMemo(() => {
if (!query) {
return products;
}
return products.filter(product =>
product.name.toLowerCase().includes(query.toLowerCase())
);
}, [products, query]);
const handleChange = (e) => {
const newQuery = e.target.value;
startTransition(() => {
setQuery(newQuery);
});
};
return (
<div>
<input type="text" value={query} onChange={handleChange} placeholder="Search products..." />
{isPending ? <p>Filtering...</p> : null}
<ul>
{filteredProducts.map(product => (
<li key={product.id}>{product.name}</li>
))}
</ul>
</div>
);
};
export default ProductList;
μ΄ μμ μμλ:
useTransition
μ μ¬μ©νμ¬isPending
κ³ΌstartTransition
μ κ°μ Έμ΅λλ€.- κ²μ 쿼리λ₯Ό μ
λ°μ΄νΈνλ
handleChange
ν¨μλstartTransition
μΌλ‘ κ°μΈμ Έ μμ΅λλ€. μ΄λ Reactμκ² μ΄ μν μ λ°μ΄νΈκ° νΈλμ§μ μμ μλ €μ€λλ€. isPending
μνλ νΈλμ§μ μ΄ μ§νλλ λμ "νν°λ§ μ€..." λ©μμ§λ₯Ό νμνλ λ° μ¬μ©λ©λλ€.useMemo
λ νν°λ§λ μ νμ μΊμνλ λ° μ¬μ©λλ©°, `products`λ `query`κ° λ³κ²½λ λλ§ λ€μ κ³μ°ν©λλ€.
μν μ
λ°μ΄νΈλ₯Ό startTransition
μΌλ‘ κ°μΈλ©΄, Reactκ° νν°λ§ κ³Όμ λ³΄λ€ μ¬μ©μ μ
λ ₯(κ²μ νλμ νμ΄ν)μ μ°μ μ μΌλ‘ μ²λ¦¬νκ² ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ νν°λ§μ μκ°μ΄ μ’ κ±Έλ¦¬λλΌλ μ
λ ₯ νλμ λ°μμ±μ΄ μ μ§λ©λλ€. μ¬μ©μλ μ
λ°μ΄νΈκ° μ§ν μ€μμ λνλ΄λ "νν°λ§ μ€..." λ©μμ§λ₯Ό λ³΄κ² λμ§λ§, UIλ λ©μΆμ§ μμ κ²μ
λλ€.
useTransitionμ μ΄μ
useTransition
μ μ¬μ©νλ©΄ λͺ κ°μ§ μ€μν μ΄μ μ΄ μμ΅λλ€:
- ν₯μλ λ°μμ±: νΈλμ§μ
λ³΄λ€ κΈ΄κΈν μ
λ°μ΄νΈλ₯Ό μ°μ μν¨μΌλ‘μ¨,
useTransition
μ κ³μ° λΉμ©μ΄ λ§μ΄ λλ μμ μ μ²λ¦¬ν λμλ UIμ λ°μμ±μ μ μ§ν©λλ€. - κ°μ λ μ¬μ©μ κ²½ν: λ λΆλλ½κ³ λ°μμ± μ’μ UIλ λ λμ μ¬μ©μ κ²½νμΌλ‘ μ΄μ΄μ Έ μ¬μ©μ λ§μ‘±λμ μ°Έμ¬λλ₯Ό λμ λλ€.
- λ ΌλΈλ‘νΉ μ λ°μ΄νΈ: νΈλμ§μ μ λ©μΈ μ€λ λκ° μ°¨λ¨λλ κ²μ λ°©μ§νμ¬ λΈλΌμ°μ κ° μ¬μ©μ μνΈμμ© λ° κΈ°ν μμ μ κ³μ μ²λ¦¬ν μ μλλ‘ ν©λλ€.
- μμ°μ€λ¬μ΄ λ‘λ© μν:
isPending
μνλ₯Ό μ¬μ©νλ©΄ λ‘λ© νμκΈ°λ₯Ό νμνμ¬ μ¬μ©μμκ² μ λ°μ΄νΈκ° μ§ν μ€μ΄λΌλ μκ°μ νΌλλ°±μ μ 곡ν μ μμ΅λλ€. - Suspenseμμ ν΅ν©:
useTransition
μ React Suspenseμ μννκ² μλνμ¬ λΉλκΈ° λ°μ΄ν° κ°μ Έμ€κΈ°μ λν λ‘λ© μνλ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
useTransitionμ μ¬μ© μ¬λ‘
useTransition
μ μ¬μ©μ μνΈμμ©μ μλ΅νμ¬ UIλ₯Ό μ
λ°μ΄νΈν΄μΌ νμ§λ§ μ
λ°μ΄νΈ κ³Όμ μ΄ λ리거λ κ³μ° λΉμ©μ΄ λ§μ΄ λ€ μ μλ μλ리μ€μμ νΉν μ μ©ν©λλ€. μΌλ°μ μΈ μ¬μ© μ¬λ‘λ λ€μκ³Ό κ°μ΅λλ€:
- λκ·λͺ¨ λ°μ΄ν°μ
νν°λ§: μ΄μ μμ μμ 보μ¬μ€ κ²μ²λΌ,
useTransition
μ λκ·λͺ¨ λ°μ΄ν°μ μ λν νν°λ§ μμ μ μ΅μ ννλ λ° μ¬μ©ν μ μμ΅λλ€. - 볡μ‘ν κ³μ°: UIμ μν₯μ λ―ΈμΉλ 볡μ‘ν κ³μ°μ μνν λ,
useTransition
μ UIκ° λ©μΆλ κ²μ λ°©μ§ν μ μμ΅λλ€. - λ°μ΄ν° κ°μ Έμ€κΈ°:
useTransition
μ Suspenseμ κ²°ν©νμ¬ λΉλκΈ° λ°μ΄ν° κ°μ Έμ€κΈ°μ λν λ‘λ© μνλ₯Ό μ²λ¦¬ν μ μμ΅λλ€. μΈλΆ APIμμ μ λ°μ΄νΈλ νμ¨μ κ°μ Έμ€λ κ²μ μμν΄ λ³΄μΈμ. νμ¨μ κ°μ Έμ€λ λμ UIλ λ°μμ±μ μ μ§νκ³ λ‘λ© νμκΈ°λ₯Ό νμν μ μμ΅λλ€. - κ²½λ‘ μ ν: μ ν리μΌμ΄μ
μ λ€λ₯Έ κ²½λ‘ μ¬μ΄λ₯Ό νμν λ,
useTransition
μ κ²½λ‘ λ³κ²½μ μ°μ μνκ³ λ μ€μν μ λ°μ΄νΈλ₯Ό μ§μ°μμΌ λ λΆλλ¬μ΄ μ ν κ²½νμ μ 곡ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ μ μκ±°λ μ¬μ΄νΈμμ μμΈ μν μ 보λ₯Ό λ‘λν λ νΈλμ§μ μ μ¬μ©ν μ μμ΅λλ€. - ν
λ§ μ ν: λΌμ΄νΈ ν
λ§μ λ€ν¬ ν
λ§ κ° μ νμ μλΉν UI μ
λ°μ΄νΈλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
useTransition
μ ν λ§ μ νμ΄ λΆλλ½κ³ μ¬μ©μ μνΈμμ©μ μ°¨λ¨νμ§ μλλ‘ λ³΄μ₯ν μ μμ΅λλ€. μ κΈ° 곡κΈμ΄ λΆμμ ν μ§μμ μ¬μ©μλ₯Ό μκ°ν΄ 보μΈμ. λΉ λ₯΄κ³ λ°μμ± μλ ν λ§ μ νμ λ°°ν°λ¦¬ μλͺ μ μ μ½νλ λ° μ€μν©λλ€. - μ€μκ° λ°μ΄ν° μ
λ°μ΄νΈ: μ€μκ° λ°μ΄ν°λ₯Ό νμνλ μ ν리μΌμ΄μ
(μ: μ£Όμ μμΈ, μμ
λ―Έλμ΄ νΌλ)μμ
useTransition
μ μ λ°μ΄νΈ νλ¦μ κ΄λ¦¬νκ³ UIκ° κ³ΌλΆνλλ κ²μ λ°©μ§νλ λ° λμμ΄ λ μ μμ΅λλ€.
μ€μ©μ μΈ κ΅¬ν ν
useTransition
μ ν¨κ³Όμ μΌλ‘ μ¬μ©νκΈ° μν λͺ κ°μ§ μ€μ©μ μΈ νμ λ€μκ³Ό κ°μ΅λλ€:
- λΉμ©μ΄ λ§μ΄ λλ μ
λ°μ΄νΈ μλ³: μ±λ₯ λ³λͺ© νμμ μΌμΌν€λ μν μ
λ°μ΄νΈλ₯Ό μ μ€νκ² μλ³νμΈμ. μ΄λ¬ν μ
λ°μ΄νΈκ°
startTransition
μΌλ‘ κ°μ μ£Όμ ν보μ λλ€. - λ‘λ© νμκΈ° μ¬μ©: νΈλμ§μ
μ΄ μ§ν μ€μΌ λ νμ μ¬μ©μμκ² μκ°μ νΌλλ°±μ μ 곡νμΈμ.
isPending
μνλ₯Ό μ¬μ©νμ¬ λ‘λ© νμκΈ°λ λ€λ₯Έ μ λ³΄μ± λ©μμ§λ₯Ό νμνμΈμ. - λ λλ§ μ΅μ ν: μ»΄ν¬λνΈκ° λ λλ§μ μ΅μ νλμλμ§ νμΈνμΈμ. λ©λͺ¨μ΄μ μ΄μ
(
React.memo
,useMemo
)κ³Ό κ°μ κΈ°μ μ μ¬μ©νμ¬ λΆνμν μ¬λ λλ§μ λ°©μ§νμΈμ. - μ ν리μΌμ΄μ
νλ‘νμΌλ§: React κ°λ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ ν리μΌμ΄μ
μ νλ‘νμΌλ§νκ³ μ±λ₯ λ³λͺ© νμμ μλ³νμΈμ. μ΄λ κ² νλ©΄
useTransition
μ΄ κ°μ₯ ν° μν₯μ λ―ΈμΉ μ μλ μμμ μ νν μ°Ύμλ΄λ λ° λμμ΄ λ©λλ€. - λλ°μ΄μ±/μ€λ‘νλ§ κ³ λ €: κ²½μ°μ λ°λΌ μ¬μ©μ μ λ ₯μ λλ°μ΄μ±νκ±°λ μ€λ‘νλ§νλ©΄ μ±λ₯μ λμ± ν₯μμν¬ μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ무 λ§μ νν°λ§ μμ μ΄ νΈλ¦¬κ±°λλ κ²μ νΌνκΈ° μν΄ μ ν λͺ©λ‘ μμ μ κ²μ 쿼리λ₯Ό λλ°μ΄μ±ν μ μμ΅λλ€.
- νΈλμ§μ λ¨μ© κΈμ§: νΈλμ§μ μ μ μ€νκ² μ¬μ©νμΈμ. λͺ¨λ μν μ λ°μ΄νΈκ° νΈλμ§μ μΌ νμλ μμ΅λλ€. μ±λ₯ λ¬Έμ λ₯Ό μΌμΌν€λ μ λ°μ΄νΈμ μ§μ€νμΈμ.
- λ€μν κΈ°κΈ°μμ ν μ€νΈ: λ€μν κΈ°κΈ°μ λ€νΈμν¬ μ‘°κ±΄μμ μ ν리μΌμ΄μ μ ν μ€νΈνμ¬ λ€μν μν©μμλ UIκ° λ°μμ±μ μ μ§νλμ§ νμΈνμΈμ. λμνμ΄ μ νμ μ΄κ±°λ ꡬν νλμ¨μ΄λ₯Ό μ¬μ©νλ μ§μμ μ¬μ©μλ₯Ό κ³ λ €νμΈμ.
useDeferredValue: κ΄λ ¨ ν
useTransition
μ΄ μν μ
λ°μ΄νΈλ₯Ό νΈλμ§μ
μΌλ‘ νμνλ λ° μ μ©ν λ°λ©΄, useDeferredValue
λ UI μ
λ°μ΄νΈλ₯Ό μ΅μ ννλ λ€λ₯Έ μ κ·Ό λ°©μμ μ 곡ν©λλ€. useDeferredValue
λ₯Ό μ¬μ©νλ©΄ λ μ€μν μ
λ°μ΄νΈκ° λ¨Όμ λ°μνλλ‘ κ°μ μ
λ°μ΄νΈλ₯Ό μ§μ°μν¬ μ μμ΅λλ€. μ΄λ λ³Έμ§μ μΌλ‘ κ°μ μ§μ°λ λ²μ μ λ§λλλ€. μ΄λ UIμ νΉμ λΆλΆμ΄ λ μ€μνκ³ μ½κ°μ μ§μ°μΌλ‘ μ
λ°μ΄νΈλ μ μλ μλ리μ€μμ μ μ©ν μ μμ΅λλ€.
κ°λ¨ν μλ λ€μκ³Ό κ°μ΅λλ€:
import React, { useState, useDeferredValue } from 'react';
function MyComponent() {
const [text, setText] = useState('');
const deferredText = useDeferredValue(text);
const handleChange = (e) => {
setText(e.target.value);
};
return (
<div>
<input type="text" value={text} onChange={handleChange} />
<p>Immediate text: {text}</p>
<p>Deferred text: {deferredText}</p>
</div>
);
}
export default MyComponent;
μ΄ μμ μμ deferredText
λ text
μνλ³΄λ€ μ½κ° λ¦κ² μ
λ°μ΄νΈλ©λλ€. μ΄λ deferredText
μ λ λλ§μ΄ κ³μ°μ μΌλ‘ λΉμΌ κ²½μ°μ μ μ©ν μ μμ΅λλ€. `deferredText`κ° λ³΅μ‘ν μ°¨νΈλ₯Ό λ λλ§νλ€κ³ μμν΄ λ³΄μΈμ. μ°¨νΈ μ
λ°μ΄νΈλ₯Ό μ§μ°μν€λ©΄ μ
λ ₯ νλμ λ°μμ±μ ν₯μμν¬ μ μμ΅λλ€.
μ£Όμ μ°¨μ΄μ :
useTransition
μ μν μ λ°μ΄νΈλ₯Ό κ°μΈλ λ° μ¬μ©λλ λ°λ©΄,useDeferredValue
λ κ°μ μ λ°μ΄νΈλ₯Ό μ§μ°μν€λ λ° μ¬μ©λ©λλ€.useTransition
μ νΈλμ§μ μ΄ μ§ν μ€μΌ λλ₯Ό λνλ΄λisPending
μνλ₯Ό μ 곡νμ§λ§,useDeferredValue
λ κ·Έλ μ§ μμ΅λλ€.
useTransitionκ³Ό κ΅μ ν(i18n)
κΈλ‘λ² μ¬μ©μλ₯Ό μν μ ν리μΌμ΄μ
μ ꡬμΆν λ κ΅μ ν(i18n)λ λ§€μ° μ€μν©λλ€. useTransition
μ μΈμ΄ μ ν μ€ μνν μ¬μ©μ κ²½νμ 보μ₯νλ λ° μ€μν μν μ ν μ μμ΅λλ€.
μΈμ΄λ₯Ό μ ννλ κ²μ μ’
μ’
UIμ μλΉ λΆλΆμ μλ‘μ΄ ν
μ€νΈ μ½ν
μΈ λ‘ λ€μ λ λλ§νλ κ²μ ν¬ν¨ν©λλ€. μ΄λ νΉν ν
μ€νΈκ° λ§κ±°λ 볡μ‘ν λ μ΄μμμ κ°μ§ μ ν리μΌμ΄μ
μμ κ³μ° λΉμ©μ΄ λ§μ΄ λλ μμ
μΌ μ μμ΅λλ€. useTransition
μ μ¬μ©νλ©΄ μΈμ΄ μ ν μ€ UI λ©μΆ€ νμμ λ°©μ§ν μ μμ΅λλ€.
i18nκ³Ό ν¨κ» useTransition
μ μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
- μΈμ΄ μ ν κ°μΈκΈ°: μ¬μ©μκ° μ μΈμ΄λ₯Ό μ νν λ, μΈμ΄ λ³κ²½μ νΈλ¦¬κ±°νλ μν μ
λ°μ΄νΈλ₯Ό
startTransition
μΌλ‘ κ°μΈμΈμ. - λ‘λ© νμκΈ° νμ:
isPending
μνλ₯Ό μ¬μ©νμ¬ μΈμ΄ μ νμ΄ μ§νλλ λμ λ‘λ© νμκΈ°λ₯Ό νμνμΈμ. μ΄λ "μΈμ΄ μ ν μ€..."κ³Ό κ°μ κ°λ¨ν λ©μμ§μ΄κ±°λ μκ°μ μΌλ‘ λ λ§€λ ₯μ μΈ μ λλ©μ΄μ μΌ μ μμ΅λλ€. - ν μ€νΈ λ λλ§ μ΅μ ν: ν μ€νΈ λ λλ§ μ»΄ν¬λνΈκ° μ±λ₯μ μ΅μ νλμλμ§ νμΈνμΈμ. λ©λͺ¨μ΄μ μ΄μ μ μ¬μ©νμ¬ λ²μλ ν μ€νΈμ λΆνμν μ¬λ λλ§μ λ°©μ§νμΈμ.
μ¬λ¬ κ΅κ°μ μ¬μ©μλ₯Ό λμμΌλ‘ νλ μ μ μκ±°λ νλ«νΌμ ꡬμΆνλ μλ리μ€λ₯Ό μκ°ν΄ 보μΈμ. μ΄ νλ«νΌμ μ¬λ¬ μΈμ΄λ₯Ό μ§μνλ©° μ¬μ©μλ μΈμ΄ κ°μ μ νν μ μμ΅λλ€. useTransition
μ μ¬μ©νλ©΄ μΈμ΄ μ νμ΄ λΆλλ½κ³ μ¬μ©μμ μΌν κ²½νμ λ°©ν΄νμ§ μλλ‘ λ³΄μ₯ν μ μμ΅λλ€. μ¬μ©μκ° μΌλ³Έμ΄λ‘ μ νμ 보λ€κ° μμ΄λ‘ μ ννλ κ²½μ°λ₯Ό μμν΄ λ³΄μΈμ. useTransition
μ μνν μ νμ 보μ₯ν©λλ€.
μ κ·Όμ± κ³ λ €μ¬ν
useTransition
μ μ¬μ©ν λ μ κ·Όμ±μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. μ₯μ κ° μλ μ¬μ©μλ μ ν리μΌμ΄μ
κ³Ό μνΈμμ©νκΈ° μν΄ μ€ν¬λ¦° 리λμ κ°μ 보쑰 κΈ°μ μ μμ‘΄ν μ μμ΅λλ€. useTransition
κ³Ό ν¨κ» μ¬μ©νλ λ‘λ© νμκΈ° λ° κΈ°ν UI μμκ° μ κ·Ό κ°λ₯νμ§ νμΈν΄μΌ ν©λλ€.
λ€μμ λͺ κ°μ§ μ κ·Όμ± νμ λλ€:
- ARIA μμ± μ¬μ©:
aria-busy
μ κ°μ ARIA μμ±μ μ¬μ©νμ¬ UIμ ν μΉμ μ΄ λ‘λ© μ€μ΄κ±°λ μ λ°μ΄νΈ μ€μμ λνλ΄μΈμ. - λ체 ν μ€νΈ μ 곡: λ‘λ© μ λλ©μ΄μ μ΄λ μ΄λ―Έμ§μ λν΄ λ‘λ© μνλ₯Ό μ€λͺ νλ λ체 ν μ€νΈλ₯Ό μ 곡νμΈμ.
- ν€λ³΄λ μ κ·Όμ± λ³΄μ₯: λͺ¨λ μνΈμμ© μμκ° ν€λ³΄λλ₯Ό ν΅ν΄ μ κ·Ό κ°λ₯νμ§ νμΈνμΈμ.
- μ€ν¬λ¦° 리λλ‘ ν μ€νΈ: μ ν리μΌμ΄μ μ μ€ν¬λ¦° 리λλ‘ ν μ€νΈνμ¬ λ‘λ© νμκΈ° λ° κΈ°ν UI μμκ° μ¬λ°λ₯΄κ² μλ΄λλμ§ νμΈνμΈμ.
κ²°λ‘
Reactμ useTransition
ν
μ λ°μμ± μκ³ μ±λ₯μ΄ λ°μ΄λ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λλ λ° μ μ©ν λꡬμ
λλ€. νΉμ μν μ
λ°μ΄νΈλ₯Ό νΈλμ§μ
μΌλ‘ νμν μ μκ² ν¨μΌλ‘μ¨, μ ν리μΌμ΄μ
μ΄ λΉ λ₯΄κ³ λ°μμ± μκ² λκ»΄μ§λλ‘ νλ λ
ΌλΈλ‘νΉ UI μ
λ°μ΄νΈλ₯Ό κ°λ₯νκ² ν©λλ€. useTransition
μ μ΄ν΄νκ³ κ΅¬ννλ©΄, νΉν 볡μ‘ν λ°μ΄ν° μ
λ°μ΄νΈ, κ³μ° λλ λΉλκΈ° μμ
κ³Ό κ΄λ ¨λ μλ리μ€μμ React μ ν리μΌμ΄μ
μ μ¬μ©μ κ²½νμ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. useTransition
μ μ±ννμ¬ μ¬μ©μμ μμΉ, κΈ°κΈ° λλ λ€νΈμν¬ μ‘°κ±΄μ κ΄κ³μμ΄ κΈ°λ₯μ μΌ λΏλ§ μλλΌ μ¬μ©νκΈ° μ¦κ±°μ΄ μΉ μ ν리μΌμ΄μ
μ ꡬμΆνμΈμ. useTransition
λ° useDeferredValue
μ κ°μ κ΄λ ¨ ν
μ λ―Έλ¬ν μ°¨μ΄λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨ μ§μ μΌλ‘ μ μΈκ³μ μΌλ‘ μ κ·Ό κ°λ₯νκ³ μ±λ₯μ΄ λ°μ΄λ μΉ μ ν리μΌμ΄μ
μ λ§λ€ μ μμ΅λλ€.