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 | 29 | 30 | 31 |
Tags
- PYTHON
- 내일배움카드
- ionic react
- ionic-react
- 항해99
- K디지털크레딧
- 알고리즘
- 프로그래밍첫걸음시작하기
- react
- 스파르타코딩클럽 후기
- React Native
- CSS
- styled components
- 프로그래머스
- Firebase
- Algorithm
- javascript
- 스파르타코딩클럽
- 패스트캠퍼스
- 부트캠프
- HTML
- ionic
- next.js 빌드 오류
- typescript
- 바이트디그리
- 프로그래밍기초
- react-native
- styled-components
- mongodb
- spartacodingclub
Archives
- Today
- Total
bravo my life!
[Ionic-React] 코드의 간결성. 버릴건 버리자. 본문
728x90
1. 개요
코드를 좀 더 가독성이 좋게, 간결하게하기 위해 버릴건 버리자.
2. 코드상세
코드 변경 전.
더보기
코드 변경 전.
/* eslint-disable no-confusing-arrow */
import { useState } from 'react';
import {
IonButton,
IonButtons,
IonHeader,
IonImg,
IonToolbar,
} from '@ionic/react';
import styled from 'styled-components';
import { NotiState } from '../../types/home/NotiState';
const TravelitHeader = styled(IonHeader)`
width: 100%;
`;
const TravelitLogo = styled(IonImg)`
margin-left: 20px;
width: 120px;
`;
const NotificationButtons = styled(IonButtons)`
margin-right: 20px;
&:hover {
cursor: pointer;
}
`;
const NotificationButton = styled(IonButton)<NotiState>`
/* - background-image lint문제가 있습니다.
- noti
? "url('/assets/icon/notification_notConfirm.png')"
: "url('/assets/icon/notification_confirmed.png')"
- 이부분을 소괄호로 씌워야 오류가 사라지고 그 후 자동정렬을 하면 자동으로 소괄호를 삭제하여
오류가 다시 발생합니다.
- 우선 임시방편으로 최상단에 lint 전체무시 구문을 추가하였습니다.*/
background-image: ${({ noti }) =>
noti
? "url('/assets/icon/notification_notConfirm.png')"
: "url('/assets/icon/notification_confirmed.png')"};
background-size: 24px;
background-repeat: no-repeat;
background-position: center;
width: 24px;
&:hover {
cursor: pointer;
}
`;
const HomeHeader = () => {
// 알림이 있다면 setNoti(true)로 알림 아이콘을 바꾸어 준다.
const [noti, setNoti] = useState<boolean>(false);
return (
<TravelitHeader>
<IonToolbar>
<TravelitLogo
slot="start"
src="/assets/icon/travelit_logo_eng.png"
></TravelitLogo>
<NotificationButtons slot="end">
<NotificationButton
fill="clear"
noti={noti}
routerLink="/noti"
></NotificationButton>
</NotificationButtons>
</IonToolbar>
</TravelitHeader>
);
};
export default HomeHeader;
코드 변경 후.
더보기
코드 변경 후.
import { useState } from 'react';
import { IonButtons, IonHeader, IonImg, IonToolbar } from '@ionic/react';
import styled from 'styled-components';
import { Icon } from '@iconify/react';
const NotiIcon = styled(Icon)`
color: var(--ion-color-danger);
position: absolute;
top: -9px;
left: -12px;
`;
const HomeHeader = () => {
// 알림이 있다면 setNoti(true)로 알림 아이콘을 바꾸어 준다.
const [noti, setNoti] = useState<boolean>(false);
return (
<IonHeader>
<IonToolbar style={{ padding: '0px 20px' }}>
<IonImg
slot="start"
src="/assets/icon/travelit_logo_eng.png"
style={{ width: '120px' }}
/>
<IonButtons slot="end">
{noti && <NotiIcon icon="bi:dot" fontSize="26px" />}
<Icon icon="ion:notifications-outline" fontSize="26px" />
</IonButtons>
</IonToolbar>
</IonHeader>
);
};
export default HomeHeader;
3. 느낀점
현재 사이드 프로젝트를 하고 있는 팀장에게 수정할 곳을 코드리뷰 받았다.
나의 코드도 깔끔하다 생각했지만 좀 더 깔끔해질 수 있는 방법이 있었다.
그 와중에 lint 오류도 사라지는 경험을 할 수 있었다.
최대한 생각하여 지울건 지우고, 합칠건 합치자.
'개발기 > [Travelit] Ionic-React' 카테고리의 다른 글
[Ionic-React][중간기록] 마이페이지 프로필 레이아웃 완성 (0) | 2022.08.02 |
---|---|
[Ionic-React] 중간 기록. 홈 UI 완성. (0) | 2022.07.22 |
[Ionic-React] CSS 부모의 패딩 속성 무시하기 (0) | 2022.07.22 |
[Ionic-React] Swiperjs의 scrollbar를 커스텀 하기(feat. 색상, 크기) (0) | 2022.07.22 |
[Ionic-React] TypeScript, styled-components 로 조건 변경시 CSS 바꿔주기 (0) | 2022.07.17 |