์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- javascript
- ํฐ์คํ ๋ฆฌ
- ํ๊ณ ๋ก
- frontend
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- backend
- react
- nextjs
- typescript
- ๊ฐ๋ฐ์
- Today
- Total
๐ My name is Ez : ์ฝ๋ค ์ฌ์ ๊ฐ๋ฐlife
[ETC] : ๊ณตํต์ปดํฌ๋ํธ? ์? ๋ณธ๋ฌธ

์ด๋ฒ ํ๋ก์ ํธ๋ ๊ฐ์ฅ ์์ ์ํฐํ์์ ์ปดํฌ๋ํธ๋ถํฐ ์์ํ๋ค. ๊ทธ๋์ ๊ฐ ๊ฐ์ ๊ณตํต์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ํ๋ ๋ง๋ค์ด๋ณด๊ณ ๋ฆฌ๋ทฐํ๊ธฐ๋ก ํ๋ค.
์ค๋๊น์ง ์์ ์ ํ๊ณ ๋ด์ผ ๊ฐ์ด ๋ชจ์ฌ์ ๋ฆฌ๋ทฐ๋ฅผ ํ๊ธฐ๋ก ํ๋ค.
์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ์์ฃผ ๋ง์ด ์ฌ์ฉ๋๋ Input์ ๋จผ์ ๋ง๋ค๊ธฐ๋ก ํ๋๋ฐ, InputBasic์ด๋ผ๊ณ ์ ํ๋ค.
๋จ์ ํ ์คํธ๋ฟ ์๋๋ผ , ์ซ์, ์์, ์์์ , ๊ณ์ข๋ฒํธ, ์จ๋, ์ ํ๋ฒํธ ๋ฑ.. ๋ค์ํ ํํ์ ํ ์คํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ์ปจํธ๋กคํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ธํ ๋ด๋ถ ๋ผ๋ฒจ(๋จ์ ํ๊ธฐ), ๊ฒ์์ฐฝ์ ๋๋ณด๊ธฐ ๋ฑ ๋ค์ํ ํํ๋ ๊ฐ์ง๊ณ ์์ด์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค.
์ผ๋จ CSS ๊ด๋ จ๋ ๋ถ๋ถ์ ํผ๋ธ๋ฆฌ์ฑ์ด ๋์ค๋ฉด ์ ์ฉํ๋ค๊ณ ์๊ฐํ๊ณ ๊ฐ๊ฐ์ ์์น๋ฅผ ๋จผ์ ์ก์๋ค.
Prop๋ก๋ ๊ฐ๋จํ๊ฒ value, setValue, className, kind, disabled, maxLength... ์ฌ๋ฌ Props๋ก ๊ตฌ์ฑ๋์๊ณ ,
์ฌ๊ธฐ์ ์ค์ํ ๊ฑด kind์์ฑ์ด๋ค. ์ด๊ฒ์ ๋ฐ๋ผ ์ ๋ ฅ์ด ๊ฐ๋ฅํ ๋ฒ์๋, format์ด ๋ฌ๋ผ์ง๊ฒ ๋ง๋ค์๋ค.
์ฌ์ค ์ค๋ ๋งํ๊ณ ์ถ์ ๋ถ๋ถ์ ์๋ซ๋ถ๋ถ์ด๋ค.
โฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธโฌ๏ธ
๐ ์ด๋ฒ์ ๋ง๋ค๋ฉด์ ์ค์ํ๊ฒ ์๊ฐํ ๊ฑด ์ ์์ ํผ์ ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ๋์ด ์ฌ์ฉํ ๋ ์ด๋ ต์ง ์๊ฒ ๊ตฌํํด์ผ ํ๋ค...
๊ทธ๋์ ์๊ฐํ ๊ฑด kind์ ๊ฐ์ props์ ์ง์ Type์ ์ค์ ํด์ ์ด๋ค ์ข ๋ฅ๊ฐ ์๋์ง ์์ฑํ๋ ค๊ณ ํ ๋ ๋ณด์ผ ์ ์๊ฒ ํ๋ค.
"Type Alias"๋ TypeScript์์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ผ๋ก, ์๋ก์ด ํ์ ์ ์ ์ํ ๋ ์ฌ์ฉํ๋ค. ์ํ๋ ํํ์ ํ์ ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ, ๊ธฐ์กด์ ํ์ ๋ค์ ์กฐํฉํด์ ๋ ๋ณต์กํ ํ์ ์ ๋ง๋ค ์๋ ์๋ค. (์๋ ์ฝ๋ ์ฐธ๊ณ )
export type InputKind =
| 'normal'
| 'number'
| 'day'
| 'minute'
| 'accout'
| 'decimal'
| 'minusDecimal'
| 'phone'
| 'emailId'
| 'emailDomain';

์ด๋ฐ ์์ผ๋ก ์์ฑํ๋ฉด ์ดํ Props Interface ์ค์ ์ kind์ InputKind๋ฅผ ์ง์ ํ๋ฉด ์ดํ์ InputBasic์ kind์ ๊ฐ์ ์ ๋ ฅํ ๋ ๋ชฉ๋ก์ ๋์์ ๋ณด๊ธฐ ํธํ๊ณ , ์ง์ ๋ ๊ฐ ์ด์ธ์๋ ์๋ฌ๋ฅผ ํ๊ธฐํด์ ์๋ชป๋ ์ฌ์ฉ์ ๋ง์ ์ ์๊ฒ ํ๋ค.
๊ทธ๋ฆฌ๊ณ InputBasic์์ ์ฌ์ฉ๋๋ Props ์ค๋ช ์๋ ์ฝ๋์ฒ๋ผ ์์ฑํ๋ฉด ์ดํ ์ปดํฌ๋ํธ๋ฅผ import ํ๊ณ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ํ์ํ Props์ ๋ํ ์ค๋ช ์ด ๋์์ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๊ฐ๋จํ ์์ฑ์ด์ง๋ง ์ฒ์ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃจ๋ ์ฌ๋์๊ฒ๋ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.
(์ด์ ๋ถํฐ ์๊ณ ์์์ง๋ง ์ ํ์ง ์์๋๊ฐ... ๐คฆ๐ปโโ๏ธ)
"JSDoc" ์ฃผ์์ ์ฌ์ฉํ๋ฉด ํด๋น ์ฝ๋์ ์ฌ์ฉ๋ฐฉ๋ฒ๊ณผ ์๋๋ฅผ ํ์ ํ ์ ์์ด ๊ฐ๋ฐ์๊ฐ์ ๋จ์ถํ ์ ์๋ค. (์๋ ์ฝ๋ ์ฐธ๊ณ )
/**
* @param {string} value - value
* @param {React.Dispatch<React.SetStateAction<string>>} setValue - setValue
* @param {string} kind - input์ ์
๋ ฅ ๋ฐ์ ์ ์๋ value ์ข
๋ฅ (InputKind)
* @param {string} className - className ์ถ๊ฐ
* @param {boolean} search - ๊ฒ์์์ด์ฝ ์ ๋ฌด
* @param {string} placeholder -placeHoder ๋ฌธ๊ตฌ ์ถ๊ฐ
* @param {string} leftLabel - ์ข์ธก์๋ด ๋ฌธ๊ตฌ ์ถ๊ฐ
* @param {string} rigthLabel - ์ฐ์ธก์๋ด(๋จ์) ๋ฌธ๊ตฌ์ถ๊ฐ
* @param {boolean} disabled - disabled ์ฌ๋ถ
* @param {boolean} readOnly - readOnly ์ฌ๋ถ
* @param {number} maxLength - ๊ธธ์ด์ ํ (ํ๊ธ์ ์ ํ * 2 ๊ฐ์ผ๋ก ์
๋ ฅ)
* @param {funtion} onPressEnter - Enter key ์
๋ ฅ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ถ๊ฐ
* @returns void
*/

์ด์ ์๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ ํจ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋ ์๋ฌด ์ค๋ช ์ด๋ ์ฃผ์์ด ์์ด์ ํ๋ํ๋ ๋ถ์ํ๋๋ฐ ์๊ฐ์ด ๋๋ฌด ๋ง์ด ์์๋ผ์ ๊ฐ๋ฐ์ ๋ฌด์ ์ง์ฐ์ ์ผ์ผ์ผฐ๋ค....๐ฅ
๊ฐ์ด ์ผํ๋ ์ง์ฅ๋๋ฃ(๋ธ๋ก๊ทธ๋ฅผ ๊ฐ์ด ์ฐ๊ธฐ๋ก ํ ใ ใ ) ์๊ฒ ์ค๋ ๋ณด์ฌ์คฌ๋๋ ๊ต์ฅํ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ํด์ ๋งค์ฐ ๊ธฐ๋ถ์ด ์ข์๊ณ , ์๋์ด ๋ถ์๊ฒ๋ ๊ฐ๋ฐ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ๋๋ฆฌ๋ฉด์ ์ค๋ ์์ฑํ type์ด๋ ์ด๋ฐ param์ ๋ํ ์ค๋ช ์ ์ ์ ๊ฒ์ ๋ณด์ฌ๋๋ฆฌ๋ ๋งค์ฐ ์ข์ํ์ จ๊ณ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค๊ณ ํด์ฃผ์ ์ ๋ง์กฑํ๋ค.
๋ค์ ํ๋์ฉ ์์ํ๋๊น ๋ด๊ฐ ๊ฐ๋ฐํ๋๋ผ๋ ๋ค๋ฅธ ์ฌ๋๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค!
'โจ๏ธ Web Front-End > ETC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Day.js] : Moment.js (Day.js๋ก ๋ณ๊ฒฝ) (0) | 2023.07.24 |
---|---|
[StoryBook] : ์คํ ๋ฆฌ๋ถ์ด ๋ญ์ง? (0) | 2023.07.22 |
[Performance] : Debouncing(๋๋ฐ์ด์ฑ),Throttling(์ฐ๋กํ๋ง) (0) | 2023.07.21 |