์๋
ํ์ธ์~ ๊ณ ์์ด์์.
๋ ์ค๋๋ง์ ํฌ์คํธ๋ฅผ ์ฐ๋ค์. ์์ฃผ ์จ์ผํ๋๋ฐ ๋ธ๋ก๊ทธ์ ํต ๊ด์ฌ์ ๋ชป๊ฐ์ก๋ค์.
๋ฐ์๊ธฐ๋ํ๊ณ ๊ทธ๋ด์ธํ๊ฒ ์ธ๊ฒ๋ค์ ์ฐพ๋๋ผ ์๊ฐ์ด ํ์ฉ ์ง๋ฌ์ด์. ์ค๋์ ์งง๊ฒ ๊ธ์ ์์ฑํด๋ณผ๊ฒ์~
RSC์ RHF, Zod๋ฅผ ์๊ฐํ ๊นํด์.
ํ์ฌ RSC๋ Next.jsํ๋ ์์ํฌ์์ ์๋ฒ์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํด์. ์์ง ์์ ์ฑ์ ์กฐ๊ธ ๋จ์ด์ง๋ ํธ์ด์์.
RSC์ ์ฅ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ํฌํจ๋์ง์๊ณ , ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ถ๋ฌ์์ ํ๋ฉด์ ๋ ๋๋งํด์ฃผ๋ ๋ฑ์ ์ฅ์ ์ด ์์ด์.
RSC์ ๋จ์ ์ผ๋ก๋ ๊ธฐ์กด์ ๋ฆฌ์กํธ์ ์๋นํ ๋ค๋ฅธ ํจํด์ผ๋ก ๊ฐ๋ฐ์ ํด์ผํด์.
๊ธฐ์กด์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์๋ฅผ ๋ฌถ์ด์ ์ด๋ฅผ ์ถ์ํํ๋๋ฐ ๋ชฉ์ ์ ๋์์ง๋ง, RSC๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ ํ๋ฉด์ ๋ ๋๋งํ๋๊ฐ
์ ์ฌ์ฉ์ ๋์์ ํตํด ํ์ด์ง์ ๋ณํ๋ฅผ ์ผ์ผํค๋๊ฐ
๋ฅผ ๊ตฌ๋ถํด์ ์๋ฒ/ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๋๋ ์.
์๋ฒ์ปดํฌ๋ํธ๋ ๊ธฐ์กด์ ์ปดํฌ๋ํธ์ ๋ค๋ฅด๊ฒ ๋ค์ํ ์ ์ฝ ์ฌํญ๋ค์ด ์์ด์. ํด๋ผ์ด์ธํธ์ปดํฌ๋ํธ๋ ๊ธฐ์กด ์ปดํฌ๋ํธ์ ๋งค์ฐ ๋น์ทํ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง, props์ ์ง๋ ฌํ๋ ์์(ํจ์ ์ฌ์ฉ ๋ถ๊ฐ)๋ง ๋๊ฒจ์ค ์์์ด์.
์ด๋ ๋ฏ ๊ธฐ์กด์ ๊ฐ๋ฐ ๋ฐฉ์๊ณผ ์๋นํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ๋ฌ๋์ปค๋ธ๊ฐ ๊ฝค ๋์ ํธ์ด์์. ํ์ง๋ง ๊ทธ๋งํผ ์ฅ์ ๋ ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์๋๋ฉด ์ข์ง ์์๊น ์๊ฐํด์.
RHF๋ RSC์ฒ๋ผ ํ๋ ์์ํฌ๋ ์๋๊ณ , ๋จ์ํ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์. ๋ฆฌ์กํธ์ ๊ฒฐํฉํ์๋ ๋ค์ํ ์ฅ์ ๋ค์ด ์์ด์.
๋ณดํต input์ ๋ง๋ค๋ useState๋ก state๋ฅผ ํ๋ ๋ง๋ค๊ณ onChange์ setState๋ฅผ ๊ฒฐํฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ๋ง์ดํด์. input์ด ์ฌ๋ฌ๊ฐ๋ฉด useState๋ ๊ทธ๋งํผ ๋ง์์ง๊ณ ์ฝ๋๋ ์ง์ ๋ถํด์ง๋๊ฒ ๋น์ฐํ ์ผ์ด๊ฒ ์ฃ . ์ ๋ง ๋ฒ๊ฑฐ๋ก์ด ์ผ์ด ์๋ ์ ์์ด์.
input๊ณผ state๋ฅผ ๊ฒฐํฉํ๋๊ฒ ๋ฐ๋ก RHF์์. useForm()์ ์ด์ฉํด์ form๊ด๋ฆฌ ํจ์์ ์ํ๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ input๊ณผ form์ ์ฐ๊ฒฐํด์ฃผ๋ฉด ๋ฐ๋ก useState์์ด input๊ณผ form์ ๊ด๋ฆฌํ ์ ์๋ต๋๋ค.
Zod๋ ์ํ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์. ์ํ์ ๊ฐ์ด ๋น์ด์๋์ง, ๋ฌธ์์ด, ์ด๋ฉ์ผ, url, ์ต์๊ธธ์ด, ์ต๋๊ธธ์ด, ์ซ์, ๋์๋น๊ต, ๋ฑ๋ฑ ๋ค์ํ ๊ฒ์ฆ์ ์์ฃผ ํธ๋ฆฌํ๊ฒ ๋์์ค์.
๊ทธ๋์ ์์ ์๊ฐํ useForm์ resolver์ ์ฐ๊ฒฐํด์ฃผ๋ฉด form ๋ฐ์ดํฐ ๊ฒ์ฆ์ ๋์์ค๋ต๋๋ค.
์ค๋์ ์งง๊ฒ ์์ฆ ์์ฃผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๊ฐ ๊ธ์ ์์ฑํด๋ดค์ด์. ๊ฐ๋ฐ์ ๋์์ด ๋์
จ๋ค๋ฉด ์ข๊ฒ ๋ค์.
์ด์ ์๋ฌ๊ฐ๊ฒ์ ๋ฐ์ด๋ฐ์ด~