์ง์ฐ๋ ๋ ๋๋ง์ ์ค๋จ๊ฐ๋ฅ, ์ฌ์ฉ์์ ์ธํฐ๋ ์ ์ ์ฐจ๋จํ์ง์๋๋ค
-
useTransition
- ๋ฌด๊ฑฐ์ด ์ฐ์ฐ UI ์กฐ๊ฐ์ ๋ ๋๋ง ์ผ์ผํค๋ ์ํ ์ ๋ฐ์ดํธ์ ๋ํด ๋ฎ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ์ํ ๋ณ๊ฒฝ์ ์ง์ฐ์์ผ์ ๋ ๋๋ง์ ์ง์ฐ์ํจ๋ค.
- startTransition์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค
- ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก startTransition์ ๋น๋๊ธฐํจ์๋ ๋ฃ์ ์ ์๋ค. (์คํ์์ ์ด ๋ถํ์คํด์ง๋ฏ๋ก ๋ฉ์ปค๋์ฆ๊ณผ ๋ง์ง์์)
- ๋น๋๊ธฐ ๋ ๋๋ง (์ง์ฐ ๋ ๋๋ง) ์ฒ๋ฆฌ
- ๋ก๋ฉ ์ํ ๊ด๋ฆฌ
- ๋ฎ์ ๋ ๋๋ง ์ฐ์ ์์
const [isPending, startTransition] = useTransition();
-
useDeferredValue
- useTransition๊ณผ ๋ค๋ฅด๊ฒ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ํจ์๊ฐ ์๋๋ผ ์ํ ๊ฐ์์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
- ๋๋ฐ์ด์ค์ ๋น์ท, ๊ทธ๋ฌ๋ ๋๋ฐ์ด์ค์ ๋ฌ๋ฆฌ ๊ณ ์ ๋ ์ง์ฐ์๊ฐ ์์ด ์ฒซ๋ฒ์งธ ๋ ๋๋ง์ด ์๋ฃ๋ ํ์ ์ง์ฐ๋ ๋ ๋๋ง์ ์ํํ๋ค.
- useTransition์ ์ฌ์ฉํ๋ ๋ฐฉ์์๋ง ์ฐจ์ด๊ฐ์์๋ฟ, ์ง์ฐ๋ ๋ ๋๋ง์ ํ๋ค๋์ ์์ ๋์ผํ๋ค.
const deferredValue = useDeferredValue(value)
๊ฐ์ ์ํ๋ฅผ ๋ฐ๋ผ๋ณด๋ UI ์กฐ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ, ๋ฆฌ์กํธ 18์ useTransition, useDeferredValue๋ฅผ ์ฌ์ฉํ UI ์กฐ๊ฐ์ ์ํ ๋ณ๊ฒฝ์ ์ง์ฐ์ํจ๋ค. ์ด๋ ์ด ํ ๋ค์ ์ฌ์ฉํ์ง์์ UI์กฐ๊ฐ์ ์ด์ ์ํ๋ก ๋ ๋๋ง์ด ๋๋๋ฐ, ํ ๋ค์ ์ฌ์ฉํ UI ์กฐ๊ฐ์ ๋ฌด๊ฑฐ์ด ์ฐ์ฐ์ด ๋๋๊ณ ์ํ๋ณ๊ฒฝ ๋ฐ ๋ ๋๋ง์ด ๋๋ฏ๋ก ๊ฐ์ ์ํ๋ฅผ ๋ฐ๋ผ๋ณด์๋ โํ๋ฉด์ด ์ฐข์ด์ง๋(ํ ์ด๋ง) ํ์โ์ด ๋ฐ์ํ๋ค.๋ฐ๋ผ์ ๋ค๋ฅธ ๊ฐ์ ๋ ๋๋งํ๊ฒ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด useSyncExternalStore๋ก ์ธ๋ถ ์ํ๋ฅผ ๊ตฌ๋ ํด์ ์ํ ๋๊ธฐํ๋ฅผ ์์ผ์ผํ๋ค.
- ๋์์ฑ ์ด์๋ ๋ณดํต ์ธ๋ถ ์ํ์์ ๋ฐ์.
- ๋ณดํต ๋ฆฌ์กํธ์์ ๊ด๋ฆฌํ๋ ์ํ(useState, useReducer)์ธ ๊ฒฝ์ฐ ๋ฐ์ํ ํ๋ฅ ์ด ์ ์ง๋ง, ๋ฆฌ์กํธ์์ ๊ด๋ฆฌํ์ง์๋ ์ธ๋ถ์ํ์ธ ๊ฒฝ์ฐ ๋ฐ์ํ๋ฏ๋ก ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค.
์ธ๋ถ ์ํ๋ฅผ ๊ตฌ๋ ํด์ ์ํ ๋๊ธฐํ๋ฅผ ์์ผ์ค๋ค.
useSyncExternalStore(
subscribe: (callback) => Unsubscribe,
getSnapshot: () => state
) => State