πΒ 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κ° λμ΄ 'λ‘λ© μ€...' λ©μμ§λ₯Ό 보μ¬μ€ μ μλ€.