Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 마이크 권한 요청
- 템플릿 리터럴
- 동적 디자인
- es module
- useSWRImmutable
- useCallback()
- github login
- 웹 디자인
- useQuery
- npm publish
- Lottie web
- typescript
- useState
- window.scrollY
- next.js
- useSwr
- svg style
- npm library
- npm module
- React
- Tailwind CSS
- 백틱
- nextauth
- recoil
- react-icons
- NEXT
- CJS
- flutter
- 웹 애니메이션
- python
Archives
- Today
- Total
김재욱의 이모저모
js higher order function에 대하여 본문
728x90
이번에는 JavaScript의 고차함수에 대하여 작성해보려고 한다.
JavaScript에서 "고차 함수"는 다른 함수를 인자로 받거나 함수를 반환하는 함수를 말합니다. 이러한 기능은 함수형 프로그래밍 스타일을 지원하며, JavaScript에서 함수를 값으로 다룰 수 있는 유연성을 제공합니다.
나는 함수를 인자로 받는 방식의 고차함수를 활용해 보았는데 결과가 훌륭했다!
활용하기 전
<CircleIconChip name={'faceWorst'} width={20} height={20} viewBox={'0 0 20 20'} />
<CircleIconChip name={'faceBad'} width={24} height={24} viewBox={'0 0 24 24'} />
<CircleIconChip name={'faceNormal'} width={24} height={24} viewBox={'0 0 24 24'} />
<CircleIconChip name={'faceGood'} width={24} height={24} viewBox={'0 0 24 24'} />
<CircleIconChip name={'faceBest'} width={20} height={20} viewBox={'0 0 20 20'} />
이 코드가 나의 원래 코드였다. 5개의 아이콘을 직접 입력하였고 새로운 아이콘을 추가하고 싶다면 직접 추가하면 되었다.
map을 이용한 고차함수를 활용하고 난 후
export type IconItem<TName = IconRegistryKey, TBox = ViewBoxSize> = {
name: TName;
width: string | number;
height: string | number;
viewBox: TBox;
};
export const CIRCLE_ICON_PRESET: Array<IconItem> = [
{ name:'faceWorst' , width:20 , height:20 , viewBox:'0 0 20 20' },
{ name:'faceBad' , width:24 , height:24 , viewBox:'0 0 24 24' },
{ name:'faceNormal' , width:24 , height:24 , viewBox:'0 0 24 24' },
{ name:'faceGood' , width:24 , height:24 , viewBox:'0 0 24 24' },
{ name:'faceBest' , width:20 , height:20 , viewBox:'0 0 20 20' },
];
...
{CIRCLE_ICON_PRESET?.map((icon) => {
return (
<CircleIconChip name={icon.name} width={icon.width} height={icon.height} viewBox={icon.viewBox} />
);
})}
이렇게 작성을 하고 나면 화면에 들어가는 icon의 구성은 CIRCLE_ICON_PRESET에서 확인하면 되고 이를 화면에 띄우는 부분은 밑의 return 구문에서 이뤄지니 코드가 훨씬 짧고 읽기 쉽게 바뀐 것을 알 수 있다.
혹시 이 방법 외에도 좋은 방법이 있다면 알려주세요! 읽어주셔서 감사합니다.
※밑의 블로그를 참고하면서 공부하였습니다.
728x90
'Front-end' 카테고리의 다른 글
Netflix 클론코딩 기록 남기기 (3) - useCallback() 과 콜백 함수 (0) | 2023.10.25 |
---|---|
Netflix 클론코딩 기록 남기기 (2) - 로그인 페이지 (2) | 2023.10.20 |
Netflix 클론코딩 개발 기록 남기기 (1) (1) | 2023.10.11 |
컴포넌트 주도 개발(CCD)과 Storybook 사용하기 (0) | 2023.06.07 |
[Error] Expected linebreaks to be 'LF' but found 'CRLF'. (0) | 2023.06.06 |