πΒ Reference
πΒ Chapter
β£
useTransition
μ Reactμ ν
(hook)μΌλ‘, UI μ
λ°μ΄νΈλ₯Ό κΈ΄κΈνμ§ μμ κ²μΌλ‘ νμν΄μ, μ¬μ©μκ° μ
λ ₯νλ λμ νλ©΄μ΄ λ©μΆκ±°λ λκΈ°λ νμ μμ΄ λ§€λλ½κ² UIλ₯Ό μ νν μ μκ² ν΄μ€λ€.useTransition
μ λ κ°μ§ μ£Όμ κΈ°λ₯μ μ κ³€νλ€.
isPending
μν
useTransition
μ νΈμΆνλ©΄ [isPending, startTransition]
λ°°μ΄μ λ°ννλλ°, isPending
μ΄ true
μΌ λλ μ νμ΄ μμλμμμ, false
μΌ λλ μλ£λμμμ μλ―Ένλ€.startTransition
ν¨μ
startTransition
μΌλ‘ κ°μΌ μ
λ°μ΄νΈλ κΈ΄κΈνμ§ μμ κ²μΌλ‘ κ°μ£Όλμ΄, Reactκ° λ€λ₯Έ κΈ΄κΈν μ
λ°μ΄νΈ(μ: μ¬μ©μ μ
λ ₯)λ₯Ό λ¨Όμ μ²λ¦¬νλλ‘ νμ©νλ€.useTransition
μ μλμ κ°μ΄ μ¬μ©ν μ μλ€.import { useState, useTransition } from 'react';
function TabContainer() {
const [isPending, startTransition] = useTransition();
const [tab, setTab] = useState('about');
function selectTab(nextTab) {
// startTransitionμ μ¬μ©ν΄ λλ¦° μν μ
λ°μ΄νΈλ₯Ό κ°μλλ€.
startTransition(() => {
setTab(nextTab);
});
}
return (
<div>
<button onClick={() => selectTab('about')}>About</button>
<button onClick={() => selectTab('posts')}>Posts</button>
<button onClick={() => selectTab('contact')}>Contact</button>
{isPending && <p>λ‘λ© μ€...</p>}
{tab === 'about' && <About />}
{tab === 'posts' && <Posts />}
{tab === 'contact' && <Contact />}
</div>
);
}
selectTab
ν¨μ λ΄λΆμ setTab
μ
λ°μ΄νΈλ startTransition
μΌλ‘ κ°μΈμ Έ μλ€.isPending
μ΄ true
κ° λμ΄ 'λ‘λ© μ€...' λ©μμ§λ₯Ό 보μ¬μ€ μ μλ€.