ํผ ์ ์ถ ํ ์๋ต์ด ์ฌ ๋๊น์ง ๋ก๋ฉ ํ๋ฉด์ ๋์๋ณด์.
๐ ๊ธฐ์กด ๋ฐฉ์
๋ณดํต React์์ ๋ก๋ฉ ํ๋ฉด์ ๊ตฌํํ๋ค๋ฉด ์๋์ ๊ฐ์ ๋ฐฉ์์ผ ๊ฒ์ด๋ค.
function LoginPage() {
const [loading, setLoading] = useState(null);
return (
<div>
{loading && <Loading />}
</div>
)
}
submit ๋ฒํผ ํด๋ฆญ โก๏ธ setLoading(true) โก๏ธ loading์ ์ํ๊ฐ ๋ฐ๋์ด ๋ฆฌ๋ ๋๋ง ๋ฐ์, ๋ก๋ฉ UI๊ฐ ํ๋ฉด์ ๋์์ง
๊ทธ๋ฌ๋ react-hook-form์ ์ฌ์ฉํ ๊ฒฝ์ฐ ํด๋น ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค.
react-hook-form ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ณด๋ฉด, react-hook-form์ form ์์ญ์ ์ ์ธํ ๋ค๋ฅธ ์์ญ์ re-render๋ฅผ ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๊ณ ์ ํ์๋ค. ์ด๋๋ฌธ์ handleSubmit์ ๋ฑ๋กํ ํจ์ ๋ด์์ setLoading์ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํด๋, ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ก๋ฉ UI๊ฐ ๋ ๋๋ง๋์ง ์๋๋ค.
โ formState - isSubmitting ํ์ฉํ๊ธฐ
๋คํํ react-hook-form์์๋ ๋ก๋ฉํ๋ฉด์ ๊ตฌํํ ์ ์๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ ์๋ค.
formState๋ฅผ ํ์ฉํ๋ฉด ๋๋ค. formState๋ ๋ง๊ทธ๋๋ก ํผ์ ์ํ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด๋ค. ์๋์ ๊ฐ์ ์ ๋ณด๋ค์ ํ์ธํ ์ ์๋ค.
- isSubmitted
- isSubmitSuccessful
- isSubmitting
- isValid
- errors
react-hook-form formState ๊ณต์๋ฌธ์
useForm - FormState
Performant, flexible and extensible forms with easy-to-use validation.
react-hook-form.com
์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์์ ํ์ธํ์.
๋ฌดํผ ์ด ์ค์์ ์ฐ๋ฆฐ isSubmitting์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
handleSubmit์ ๋ฑ๋กํ form ์ ์ก ํจ์๊ฐ ํธ์ถ๋๋ฉด ๊ฐ์ด true๊ฐ ๋๋ค. ํด๋น ํจ์์ ๋น๋๊ธฐ ์์ ์ด ๋๋๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด false๋ก ๋ฐ๋๋ค. (๊ณต์ ๋ฌธ์์๋ true if the form is currently being submitted. false otherwise. ๋ผ๊ณ ๋์ด ์๋ค.)
๋ฐ๋ผ์ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
function LoginPage() {
const { register, handleSubmit, formState } = useForm();
const { isSubmitting } = formState; // ๋น๊ตฌ์กฐํ ํ ๋น
return (
<div>
{isSubmitting && <Loading />}
</div>
)
}
๐๐ป ์์ฑ ํ๋ฉด
์ ์ฉ๋ณด์ค react-hook-form
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ๋ํ์ ๊ฐ๋ ๋ถํฐ Yarn Berry๊น์ง (0) | 2022.10.10 |
---|---|
npm, yarn, pnpm์ ์ฐจ์ด์ ์ ๋น๊ตํด๋ณด์ (0) | 2022.09.26 |
Context API ์ ๋๋ก ์ดํดํ๊ธฐ (1) | 2022.09.22 |
useEffect ์ ๋๋ก ์ดํดํ๊ธฐ (2) | 2022.09.21 |
Custom Hook์ ํจ์์ผ๊น ์ปดํฌ๋ํธ์ผ๊น (0) | 2022.09.09 |