20220116 Frontend 주말 개발일지 === ###### tags: `20220116` # 개발 내용 ## Shortcut ![](https://i.imgur.com/45QOYSl.png) #### 홈화면에 위와 같은 컴포넌트가 1/15일 기준 업데이트되었다. > ~~벙찌더라. 저걸 해말아..?~~ 그래도 생긴게 귀엽고 있으면 더 이쁠것 같아서 구현하기로 했다! ### 먼저 1개짜리를 만들었다. ![](https://i.imgur.com/vRUn8Ah.png) Props로 3가지를 받게 구성했다. ```typescript= type ShortcutItemProps = { src: string; link: string; title: string; }; ``` - src는 보이는 이미지의 주소, - link 서버에서 받아 사용자가 클릭시 이동할 링크, - title은 하단에 보이는 제목. **결과적으론 아래처럼 만들었고,** ![](https://i.imgur.com/FNqp8N7.png) 이제 이 친구들 5개를 모아서 최종본을 만들었다. ### Shortcuts ![](https://i.imgur.com/nzwnnzd.png) >[color=red] `items` 라는 친구 존재의 여부에 따라 다르게 렌더링 한다. 이는 **고민 끝에 결정된 것!** #### 고민거리 ~~의식의 흐름~~ 1. 어차피 저 `ShortcutItem`들의 링크, 이미지 주소, 타이틀은 고정아닌가? - 고정이면.. 그냥 미리 만들어도 될까? 3. 그리고 서버에서 이렇게 갑자기 업데이트 된거에 대한.. 응답을 준비 못할 수도 있지 않을까. 결론) ==그럼 서버에서 받았을때도 렌더링 가능하고, 서버에서 **받지 않았을때도** 가능하게 하자!== 이런.. 의식의 흐름에 따라 위와 같은 코드가 탄생했다 ```typescript= export interface ShortcutItemRes { link: string; image: string; title: string; } type ShortcutsProps = { items?: ShortcutItemRes[]; }; ``` `ShortcutItemsRes` 라는 인터페이스를 정의했고, 해당 인터페이스 배열을 ==**서버로부터 받는다면**== 아래 3번째줄이 수행된다. ```htmlembedded= <StyledShortcutWrapper> {items ? ( items.map((item) => ( <ShortcutItem link={item.link} src={item.image} title={item.title} /> )) ) : ( <> <ShortcutItem link={"/"} src="..." title="프리미엄" /> <ShortcutItem link={"/"} src="..." title="겨울 아우터" /> <ShortcutItem link={"/"} src="..." title="#스타일" /> <ShortcutItem link={"/"} src="..." title="럭키 드로우" /> <ShortcutItem link={"/"} src="..." title="빠른 배송" /> </> )} </StyledShortcutWrapper> ``` ==**서버로부터 받지 못한다면**== 아래 7번째줄부터 수행하겠다! ### 반응형 구현 <span style="color: red">**1/17 새벽 놀라운 사실을 알아버렸다.**</span> 원래는 아래와 같고, ![](https://i.imgur.com/dBSrrAy.png) 크기를 줄이면 아래처럼 동글동글해지는데, ![](https://i.imgur.com/ETEASIu.png) 반응형을 그냥 간단하게 `media query` 로 해서 border-radius를 50%로만 하려고 했었는데... ![](https://i.imgur.com/gXttWex.jpg) :::danger ![](https://i.imgur.com/puerwhJ.png) **??? 이미지가 다른거?!??!?** ::: <img src="https://i.imgur.com/s9y5fbO.jpg" width="300px"/> ##### 넘모넘모 신나잖아~ #### 고민거리 그렇다면.. `media query` 도 쓰면서.. img src를 바꿔야한다? 1. 일단 그러면 `ShortcutItem` 에게 2개의 이미지를 받게 해서.. 2. `media query` 에 따라서 안에 이미지를 바꿔야 하나? 라고 고민 했다. 결론) ==**정답!**== ![](https://i.imgur.com/FaDZ0cd.png) - `StyledImage` 에게 2개의 img src를 받게했다. - `bigImgSrc`, `smallImgSrc` 2개를 받게했다. ###### css내부에서 next image의 src를 어케 바꾸나.. 했는데 생각보다 쉬웠다. - `content: url()` 를 통해서 바꿔주었다! >[color=hotpink] **물론 해당하는 types는 모두 `smallImgSrc`를 추가했다!** --- ## Price 정보 ![](https://i.imgur.com/hObAgKw.png) > 간단한 컴포넌트를 생성했다! #### 특이점 ![](https://i.imgur.com/Hr1AJmm.png) 1. home 화면과 shop 화면에서의 가격 정보 글씨 크기가 조금 달랐다! >[color=red]**`category` 속성으로 조절했다.** 2. 가격의 정보에 쉼표가 들어가야했었다. >[color=orange]`string.toLocalString()` 함수로 해결! --- ## QuickFilter 관련 월욜에 적을거야!