React) reusable component 만들기

이해원·2021년 12월 31일
0

시작하기

목록 보기
20/27

소비목록에 대한 정보가 들어있는데 하나하나 분리해서 보면 날짜 / 소비내역 / 가격 그리고 그것들을 모두 감싼 것까지 모두 border-radius가 들어간 박스안에 들어있다. 이것들을 <div> 같은 HTML element를 사용해서 일일이 border-raius를 줬었지만 재사용이 가능한 Card라는 컴포넌트로 하나 빼주기로 하자.

Card.js

Card.css
먼저 Card.js 와 Card.css 를 만들어주고 css파일에 모든 것들의 공통요소인 border-radius와 box-shadow를 card라는 이름으로 주었다. 그다음 css 파일을 Card 컴포넌트에 import한다음 <div className="card"> 라고 주었다.

그다음 원래 일일이<div className="expenses"> 로 잡혀있던 것을
Card 컴포넌트로 바꾸어주었다. 이렇게 바꿔도 모양과 데이터가 잘 나올줄 알았는데 안의 내용물이 다 사라졌다. 이유는 바로 원래 <div>로 감싸고있던 ExpenseItem 컴포넌트가 우리가 감싸준 Card 컴포넌트 안에서는 비어있기 때문이다. 그리고 마찬가지로 원래 className으로 잡힌 css들이 사라진 것이다. 이럴때 해주어야 하는것이 바로 Card 컴포넌트에서 props로 부모의 <div>안의 데이터를 받아서 childrend으로 나타내주는것이다.

여기에서처럼 <div> {props.children} </div>의 {props.children}은 부모컴포넌트에서 <Card> </Card>가 감싸고있는것들을 받아오겠다는 의미이다.

마찬가지로 className도 Card 컴포넌트에 준 className="card" 에 부모컴포넌트에서 사용하던 className도 동시에 적용하기 위해 새로운 변수를 선언하고 card와 props로 받아온 className을 동시에 사용가능하도록 해주었다.

이렇게 하면 Card 컴포넌트를 필요한곳에 자유롭게 재사용할수있다!

profile
미어캣입니당

0개의 댓글