글 작성자: 망고좋아
반응형

📖 오늘 배운 내용 - 2022.01.22

  • styled-components
  • 페이지네이션 - offset 방식

 

📝 재사용한 스타일을 커스텀하기

import styled, { css } from "styled-components";

export const Container = styled.div`
  background-color: white;
  border: 1px solid #f0f1f3;
  border-radius: 8px;
  width: 296px;
  height: 407px;
  box-sizing: border-box;
  padding: 28px 24px 20px;
  position: relative;
  display: flex;
  flex-direction: column;

  ${props => props.large && css`
    width: 398px;
    height: 409px;
    padding-top: 32px;
  `}
`;
<Card.Container large>
  • props를 넘겨주고 css를 사용해서 스타일 적용
  • font-size: ${props=> props.large ? 20 : 18}px; 이렇게도 적용 가능

 

📝 이미지 뒤에 배경 넣기

export const TrackCardIcon = styled.img`
  width: 28px;
  height: 28px;
  padding: 10px;
  background-color: #524FA0;
  border-radius: 18px;
`
<Card.TrackCardIcon src={iconUrl} alt={iconUrl} />

 

📝 애니메이션 추가

export function Corner() {
  return (
    <OuterCorner>
      <div />
    </OuterCorner>
  )
}

const OuterCorner = styled.div`
  width: 80px;
  height: 80px;
  box-shadow: inset 10px -10px 20px rgba(95, 95, 95, 0.1);
  border-radius: 0px 8px 0px 32px;
  position: absolute;
  right: 0;
  top: 0;

  :hover > div {
    background-color: #524FA0;
    width: 52px;
    height: 52px;
  }

  > div {
    // 안쪽 코너 스타일링
    transition: all 200ms ease-in-out 0ms;
    width: 36px;
    height: 36px;
    position: absolute;
    left: 0;
    bottom: 0;
    background-color: #F4F4F4;
    box-shadow: inset 10px -10px 20px rgba(95, 95, 95, 0.07);
    border-radius: 0px 8px 0px 32px;  
  }
`

 

📝 grid

const TracksContainer = styled.div`
  // 이곳에 트랙카드 컨테이너의 스타일링을 추가하세요
  display: grid;
  grid-template-columns: repeat(3, 398px); // 세로로 몇개를 두고 한개당 각각 컬럼의 width를 어떻게 설정할 것인가
  grid-column-gap: 19px; 
  grid-row-gap: 32px;
`;

 

📝 컴포넌트 map으로 뿌려주기

<TracksContainer>
  {Array(6).fill("").map((el, idx) => {
    return  <TrackCard key={`trackcard-${idx}`} />
  })}
</TracksContainer>
  • Array(6)는 길이가 6개인 빈 배열을 만들고 .fill("") 거기를 빈 문자열로 채워준다. 그리고 idx의 값을 이용해 key값을 넣어준다.

 

📝 페이지네이션 :: offset 방식

 

[React] 리액트 페이지네이션 :: offset 방식

🎯 페이지네이션 :: offset 방식 페이지네이션을 구현하는 방법 중 하나인 offset 방식을 알아보자. 📝 페이지네이션 핵심 코드 살펴보기 {getPageNumbers(currPage, pageCount).map((page) => { return ( onClic..

lakelouise.tistory.com

 

📝 검색창과 API 호출 연동하기

const filterConditons = searchValue ? `filter_conditions=${JSON.stringify({title: searchValue})}&` : ""

const trackUrl = `${API_END_POINT}track/list/?${filterConditons}offset=${offset}&count=6`;
  • searchValue에 값이 있다면 위와 같이 api 주소에 맞춰 작성해준다.
  • http://api-xxxxxxx/list/?filter_conditions={ title: test }&offset=0&count=8 이렇게 검색된다.

 

📝 Debounce와 Throttle이란?

 

[React] Debounce와 Throttle이란?

🎯 Debounce와 Throttle이란? onChange 이벤트로 인해 글자가 작성될 때마다 api를 호출하게 된다면 서버에 과부하를 줄 수 있다. 이는 성능상의 문제가 발생될 수 있으며 유저의 사용성을 해치게 된다.

lakelouise.tistory.com

 

💡 오늘 깨달은 것

  • 다른 사람이 만든 css를 보다 보면 아이디어가 좋다는 생각이 많이 든다. 내가 한다면 div로 한번 더 감싸서 스타일링했을 거 같은데, 코드를 보면 하나의 div로 모든 작업을 끝내고 있다.
  • 페이지네이션과 Debounce는 이번 프로젝트에 사용할 수 있으면 사용해보자!
 
반응형