โ useActionState: ReactDOM.useFormState → ์ด๋ฆ ๋ณ๊ฒฝ + ๊ธฐ๋ฅ ๊ฐํ
useActionState๋ ์๋ฒ ์ก์ (server actions)์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋ ํ ์ ๋๋ค.
์๋๋ ReactDOM.useFormState๋ผ๋ ์ด๋ฆ์ด์์ผ๋ React v19์์ useActionState๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
์ด ํ ์ ํด๋ผ์ด์ธํธ์์ ํผ ์ก์ ์ ์ฒ๋ฆฌํ ๋, ์๋ฒ์์ ์ธํฐ๋์ ์ํ(๋ก๋ฉ, ์ฑ๊ณต, ์คํจ ๋ฑ)๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ค์ํ ์ ์ action์ด ์ฑ๊ณตํ๋ฉด ํผ์ ์๋์ผ๋ก resetํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ ์ด์ e.preventDefault() → fetch → ์ํ ์ ๋ฐ์ดํธ ๋ฑ์ ๋ฐ๋ณต ์์ ์ ์๋์ผ๋ก ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
๐ ๊ธฐ์กด์ react-query์ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น?
ํญ๋ชฉ | useAction | react-query |
๋ชฉ์ | ์ฃผ๋ก ํผ ์ก์ ์ฒ๋ฆฌ์ ์๋ฒ์์ ์ธํฐ๋์ | ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ธฐ(fetch) |
๋ฆฌ๋ ๋๋ง | useActionState๋ ํผ ์ ์ถ ํ ์ํ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌ | react-query๋ ์ฃผ๋ก ๋ฐ์ดํฐ ์บ์ฑ ์ค์ฌ |
๋์๋ฐฉ์ | ์๋ฒ ์ก์ ๊ธฐ๋ฐ - ์๋ฒ์ ์ฐ๊ฒฐ๋ ํจ์ ์คํ | ํด๋ผ์ด์ธํธ ์ค์ฌ - fetch, mutation |
reset ๊ธฐ๋ฅ | ์ฑ๊ณต ์ ์๋์ผ๋ก form reset | ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํจ |
SSR/Fullstack ์ต์ ํ | โ (์๋ฒ ์ก์ ๊ณผ ์ฐ๋๋จ) | โ (ํด๋ผ์ด์ธํธ ์ค์ฌ ๋๊ตฌ) |
์ ๋ฆฌํ์๋ฉด, useActionState๋ ํผ ์ค์ฌ ์๋ฒ ์ก์ ์ฒ๋ฆฌ์ ํนํ๋์ด ์๊ณ , react-query๋ REST/GraphQL ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ํจ์นญ์ ํนํ๋์ด ์์ต๋๋ค.
์ฉ๋๊ฐ ์์ ๋ค๋ฆ ๋๋ค.
๐ useFormStatus: ๋ ์ด์ props drilling์ ์๋ค
๊ธฐ์กด ๋ฌธ์ ์
ํผ์ isSubmitting, isPending ๊ฐ์ ์ํ๋ฅผ ๋ฒํผ์ด๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ์๊ณ ์ถ์ ๋, props๋ฅผ ๊ณ์ ์ ๋ฌํ๊ฑฐ๋, Context๋ฅผ ๋ง๋ค์ด์ผ ํ์ต๋๋ค.
์ ๊ธฐ๋ฅ
์ด์ ๋ useFormStatus ํ ์ ํตํด ํผ ์์ ์ด๋ค ์์น์์๋ ํ์ฌ ํผ์ ์ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
React ๋ด๋ถ์์ ์ํ ๊ณต์ ๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๊ตฌ์กฐ๊ฐ ๊น๋ํด์ง๊ณ ์ฝ๋ ์์ฑ์ด ๋จ์ํด์ง๋๋ค.
๐ useOptimistic: ๋๊ด์ UI ์ ๋ฐ์ดํธ๊ฐ ๋ ์ฌ์์ก๋ค
์๋ฒ ์ก์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์, ๋๊ด์ UI(optimistic UI)๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ํ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋๊ธ์ ์์ฑํ๋ฉด, ์๋ฒ ์๋ต ์ ์ ๋๊ธ์ด ๋จผ์ ํ๋ฉด์ ๋ณด์ด๊ฒ ํ ์ ์์ต๋๋ค.
๊ธฐ์กด์๋ useState์ react-query์ onMutate, rollback, onError ๋ฑ์ ์กฐํฉํด์ ์จ์ผ ํ์ง๋ง, ์ด์ ๋ ๊ฐ๋จํ๊ฒ useOptimistic๋ง์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํฉ๋๋ค.
๐ก ref prop: forwardRef ์์ด๋ ref ์ ๋ฌ์ด ๊ฐ๋ฅํด์ก๋ค
React v19์์๋ ref๋ฅผ props๋ก ์ง์ ์ ๋ฌํ ์ ์๋ ๊ธฐ๋ฅ์ด ๋์
๋ฉ๋๋ค.
๊ธฐ์กด์๋ ์ปดํฌ๋ํธ ๊ฐ ref ์ ๋ฌ์ ์ํด ๋ฐ๋์ forwardRef๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง, ์ด์ ๋ ๋จ์ํ ref๋ฅผ prop์ผ๋ก ๋๊ฒจ๋ ๋ฉ๋๋ค.
์ด๋ React๊ฐ ๋ด๋ถ์ ์ผ๋ก ref๋ฅผ ํน๋ณ ์ทจ๊ธํ์ง ์๊ณ , ์ผ๋ฐ props์ฒ๋ผ ๋ค๋ฃจ๊ธฐ ์์ํ๋ค๋ ๋ป์ด๋ฉฐ, ์ฝ๋ ๊ตฌ์กฐ๊ฐ ๋ ๋จ์ํด์ง๊ณ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ์ด ํฅ์๋ฉ๋๋ค.
๐ React๋ Fullstack์ผ๋ก ์งํ ์ค
React 19์์ ์๊ฐ๋ ๊ธฐ๋ฅ๋ค์ ๋จ์ํ UI ์ปดํฌ๋ํธ๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ค์๋ ์์ค์ด ์๋๋ผ, ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ๊ฒฝ๊ณ๋ฅผ ํ๋ฌผ๊ณ , ์ ์ฒด์ ์ธ Fullstack ์ํคํ ์ฒ๋ฅผ React ๋ด๋ถ๋ก ํก์ํ๋ ค๋ ์๋๊ฐ ๊ฐํ๊ฒ ๋๋ฌ๋ฉ๋๋ค.
๋ณํ | ์๋ฏธ |
useActionState | ์๋ฒ ์ก์ ๊ด๋ฆฌ (Mutations) |
useFormStatus | Form ์ํ ๊ด๋ฆฌ์ ๋จ์ํ |
useOptimistic | ์๋ฒ-ํด๋ผ์ด์ธํธ UI ๋๊ธฐํ์ ๊ฐ์ |
ref prop ๊ฐ์ | ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ๊ณผ ํ์ฅ์ฑ ํฅ์ |
๋ง๋ฌด๋ฆฌํ๋ฉฐ
React 19๋ ๊ธฐ์กด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ณ์ ์์กดํ๋ ๋ง์ ๊ธฐ๋ฅ๋ค์ React ๋ด๋ถ๋ก ๊ฐ์ ธ์ค๋ฉด์, ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ์ผ๊ด๋ ๊ฐ๋ฐ ๋ฐฉ์์ ์ ์ํ๊ณ ์์ต๋๋ค.
Fullstack React๊ฐ ๊ฐ๋ฅํด์ง๋ฉด์ Next.js, Server Actions, Server Components์์ ๊ฒฐํฉ๋ ฅ๋ ํจ์ฌ ๊ฐํด์ก์ต๋๋ค.
์์ผ๋ก React๋ฅผ ๋จ์ํ View ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณด๋ ์์ ์ ์ ์ ์ค์ด๋ค ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ,
React ์ํ๊ณ์ ๋ณํ์ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ๋ ๊ฒ์ด ์ค์ํด์ง ๊ฒ์
๋๋ค.
'WEB > REACT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Ref๋ฅผ ์ข ๋ ์ ์จ๋ณผ๊น? (forwardRef์ย useImperativeHandle) (0) | 2024.06.28 |
---|---|
[โ๏ธํธ๋ฌ๋ธ์ํ ] useEffect ๋ด setState ๋ฌดํ๋ฃจํ (0) | 2023.10.05 |
react-query๋ฅผ ์งง๊ฒ ์ฌ์ฉํด๋ณธ ํ๊ณ ..๋๊น...? (0) | 2023.04.04 |
๋ฆฌ์กํธ์์ setState๋ฅผ ํตํด์ state๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ์ด์ / setState์ ๋น๋๊ธฐ์ฑ (0) | 2022.10.21 |
Redux (0) | 2021.07.13 |