[React] Inputํ๊ทธ numberํ์ ์๋ฆฟ์ ์ ํ
์๋ ์์ผ์ ๋ฐ๋ Input ์ปดํฌ๋ํธ์์ ์ฐ๋๋ 4์๋ฆฌ, ๋ฌ์ 2์๋ฆฌ, ๋ ์ง๋ 2์๋ฆฌ๋ก ์ง์ ํ๊ณ ์ถ์๋ค.
๊ทธ๋์ ์ฐพ์๋ดค๋๋ Inputํ๊ทธ์ maxlength๋ฅผ ์ง์ ํ๋ฉด ๊ธธ์ด๋ฅผ ์ ํํ ์ ์์ผ๋, ํ์ ์ด number์ธ ๊ฒฝ์ฐ์๋ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๋ฐ๋ผ์ ์ง์ onChangeHandler์์ ๋ค๋ค์ผ ํ๊ณ , ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ณ ์ณค๋ค.
const yearChangeHandler = (e) => {
setUserInfo({ ...userInfo, year: e.target.value.slice(0, 4) });
};
const monthChangeHandler = (e) => {
setUserInfo({ ...userInfo, month: e.target.value.slice(0, 2) });
};
const dayChangeHandler = (e) => {
setUserInfo({ ...userInfo, day: e.target.value.slice(0, 2) });
};
<InputBirth
yearChangeHandler={yearChangeHandler}
monthChangeHandler={monthChangeHandler}
dayChangeHandler={dayChangeHandler}
/>
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๊ณ ์น๋๊น ํ๋ฉด์์ ์ ์ฉ์ด ๋์ง ์์๋ค. ์ผ๋ฐ์ ์ธ Inputํ๊ทธ์๋ค๋ฉด ์๋์ ํ์ ๊ฒ์ด์ง๋ง, ๋๋ Input์ ์ปค์คํ
ํ <InputBirth />
๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด์๋ค.
์์ ์ฝ๋์์ ๋ณผ ์ ์๋ฏ์ด <InputBirth />
์ปดํฌ๋ํธ๋ value ๊ฐ์ ๋ฐ๋ก ์ง์ ํ์ง ์์๋ค. ๊ทธ๋์ ์ฝ๋๋ฅผ ์ ๋ ๊ฒ ์์ฑํ๋ฉด year, month, day๊ฐ์ ๊ฐ๊ฐ 4, 2, 2๊ธ์๋ก UserInfo์ ์ ๋ณด๋ ์ ์ ์ฅ๋์ง๋ง, value๋ฅผ ๋ฐ๋ก ์ง์ ํด์ฃผ์ง ์์ผ๋ ํ๋ฉด์์๋ slice๋ ๊ฐ์ ๋ณด์ฌ์ฃผ์ง ๋ชปํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ <InputBirth />
์ปดํฌ๋ํธ์ props๋ก value๊ฐ์ ๋ฃ์ ์ ์๊ฒ ์์ ํ๊ณ , ์ฌ์ฉํ ๋์๋ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์์ ํ์๋ค.
<InputBirth
yearValue={userInfo.year}
monthValue={userInfo.month}
dayValue={userInfo.day}
yearChangeHandler={yearChangeHandler}
monthChangeHandler={monthChangeHandler}
dayChangeHandler={dayChangeHandler}
/>
์ด๋ ๊ฒ ํ๋ฉด handler์์์ ์๋ฆฟ์๊ฐ ์ ํ๋ number๋ฅผ setUserInfo๋ฅผ ํตํด ์ ์ฅํ๊ณ , ์ ์ฅ๋ state๋ฅผ value๊ฐ์์ ๋ฐ์์์ ํ๋ฉด์ ์ ์ ํ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค! ูฉ( แ )ู