React

[React] Inputํƒœ๊ทธ numberํƒ€์ž… ์ž๋ฆฟ์ˆ˜ ์ œํ•œ

ํ•˜์ด๋žŒ 2023. 4. 10. 01:46

 

์ƒ๋…„์›”์ผ์„ ๋ฐ›๋Š” 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๊ฐ’์—์„œ ๋ฐ›์•„์™€์„œ ํ™”๋ฉด์— ์ ์ ˆํžˆ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค!  ูฉ( แ› )ูˆ