startTransition
startTransition
์ UI๋ฅผ Blocking ์๊ณ ์ํ๋ฅผ ์
๋ฐ์ดํธํ ์ ์๊ฒ ํด์ค๋๋ค.
startTransition(scope)
Reference
startTransition(scope)
startTransition
ํจ์๋ ์ํ ์
๋ฐ์ดํธ๋ฅผ transition์ผ๋ก ํ์ํ ์ ์๊ฒ ํด์ค๋๋ค.
import { startTransition } from 'react';
function TabContainer() {
const [tab, setTab] = useState('about');
function selectTab(nextTab) {
startTransition(() => {
setTab(nextTab);
});
}
// ...
}
๋งค๊ฐ๋ณ์
scope
: ํ๋ ์ด์์set
ํจ์๋ฅผ ํธ์ถํ์ฌ ์ผ๋ถ state๋ฅผ ์ ๋ฐ์ดํธํ๋ ํจ์์ ๋๋ค. React๋ ๋งค๊ฐ๋ณ์ ์์ดscope
๋ฅผ ์ฆ์ ํธ์ถํ๊ณscope
ํจ์๋ฅผ ํธ์ถํ๋ ๋์ ๋๊ธฐ์ ์ผ๋ก ์์ฝ๋ ๋ชจ๋ state ์ ๋ฐ์ดํธ๋ฅผ transition์ผ๋ก ํ์ํฉ๋๋ค. ์ด๋ non-blocking์ด๋ฉฐ ์์น ์๋ ๋ก๋ฉ์ ํ์ํ์ง ์์ต๋๋ค.
๋ฐํ ๊ฐ
startTransition
์ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์์ต๋๋ค.
์ฃผ์์ฌํญ
-
startTransition
์ transition์ด ์งํ ์ค์ธ์ง ์ถ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์งํ ์ค์ธ transition์ ํ์ํ๋ ค๋ฉดuseTransition
์ด ํ์ํฉ๋๋ค. -
ํด๋น state์
set
ํจ์์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ ๋ฐ์ดํธ๋ฅผ transition์ผ๋ก ๋ํํ ์ ์์ต๋๋ค. ์ผ๋ถ props์ด๋ custom Hook ๋ฐํ ๊ฐ์ ๋ํ ์๋ต์ผ๋ก transition์ ์์ํ๋ ค๋ฉดuseDeferredValue
๋ฅผ ๋์ ์ฌ์ฉํ์ธ์. -
startTransition
์ ์ ๋ฌํ๋ ํจ์๋ ๋๊ธฐ์์ด์ด์ผ ํฉ๋๋ค. React๋ ์ด ํจ์๋ฅผ ์ฆ์ ์คํํ์ฌ ์คํํ๋ ๋์ ๋ฐ์ํ๋ ๋ชจ๋ state ์ ๋ฐ์ดํธ๋ฅผ transition์ผ๋ก ํ์ํฉ๋๋ค. ๋์ค์ ๋ ๋ง์ state ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ ค๊ณ ํ๋ฉด(์์: timeout), transition์ผ๋ก ํ์๋์ง ์์ต๋๋ค. -
Transition์ผ๋ก ํ์๋ state ์ ๋ฐ์ดํธ๋ ๋ค๋ฅธ state ์ ๋ฐ์ดํธ์ ์ํด ์ค๋จ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, transition ๋ด์์ ์ฐจํธ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ์ดํธํ์ง๋ง ์ฐจํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ ๋์ ์ ๋ ฅ์ ์์ํ๋ฉด React๋ ์ ๋ ฅ state ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ ํ ์ฐจํธ ์ปดํฌ๋ํธ์์ ๋ ๋๋ง ์์ ์ ๋ค์ ์์ํฉ๋๋ค.
-
Transition ์ ๋ฐ์ดํธ๋ ํ ์คํธ ์ ๋ ฅ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
๋ง์ฝ ์งํ ์ค์ธ transition์ด ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ, React์์๋ ํจ๊ป ์ผ๊ด ์ฒ๋ฆฌ ํฉ๋๋ค. ์ด๋ ํฅํ ๋ฆด๋ฆฌ์ฆ์์ ์ ๊ฑฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ ํ ์ฌํญ์ ๋๋ค.
์ฌ์ฉ๋ฒ
state ์ ๋ฐ์ดํธ๋ฅผ non-blocking transition์ผ๋ก ํ์
startTransition
์ผ๋ก ๋ํํจ์ผ๋ก์จ state ์
๋ฐ์ดํธ๋ฅผ transition์ผ๋ก ํ์ํ ์ ์์ต๋๋ค.
import { startTransition } from 'react';
function TabContainer() {
const [tab, setTab] = useState('about');
function selectTab(nextTab) {
startTransition(() => {
setTab(nextTab);
});
}
// ...
}
Transition์ ์ฌ์ฉํ๋ฉด ๋๋ฆฐ ์ฅ์น์์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ ๋ฐ์ดํธ์ ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
Transition์ ์ฌ์ฉํ๋ฉด UI๊ฐ ๋ฆฌ๋ ๋๋ง ๋์ค์๋ ๋ฐ์์ฑ์ ์ ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ํญ์ ํด๋ฆญ ํ๋ค๊ฐ ๋ง์์ด ๋ฐ๋์ด ๋ค๋ฅธ ํญ์ ํด๋ฆญํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฆฌ๋ ๋๋ง์ด ์๋ฃ๋ ๋ ๊น์ง ๊ธฐ๋ค๋ฆด ํ์ ์์ด ๋ค๋ฅธ ํญ์ ํด๋ฆญํ ์ ์์ต๋๋ค.