FRONT/REACT

[React] Styled Component (컴포넌트 확장)

연듀 2022. 1. 19. 16:31
노마드코더 React JS 마스터 클래스 #2 .2

 

 

컴포넌트 확장이란, 기존 컴포넌트의 모든 속성을 가지고 오면서 새로운 속성까지 더해주는 것이다. 

 

 

props를 통해 컴포넌트 style을 설정한다. 

 

import styled from "styled-components";

const Father = styled.div`
  display: flex;
`;

const Box = styled.div`
  background-color: ${(props) => props.bgColor};
  width: 100px;
  height: 100px;
`;

const Circle = styled.div`
  background-color: ${(props) => props.bgColor};
  width: 100px;
  height: 100px;
  border-radius: 50px;
`;

function App() {
  return (
    <Father>
      <Box bgColor="teal" />
      <Circle bgColor="tomato" />
    </Father>
  );
}

export default App;

 

 

이 때, 기존 컴포넌트인 Box 가 가진 모든 속성들에 border-radius 속성을 더한 Circle 컴포넌트를 만들고 싶다면?

 

 

 

import styled from "styled-components";

const Father = styled.div`
  display: flex;
`;

const Box = styled.div`
  background-color: ${(props) => props.bgColor};
  width: 100px;
  height: 100px;
`;

const Circle = styled(Box)`
  border-radius: 50px;
`;

function App() {
  return (
    <Father>
      <Box bgColor="teal" />
      <Circle bgColor="tomato" />
    </Father>
  );
}

export default App;

 

 

 

styled 함수를 쓰면, Box의 모든 속성들을 가져오고 ` ` 안의 코드들을 추가적으로 더해준다. 

 

그리고 backgroundColor는 props를 통해 tomato로 다르게 설정도 가능하다. 

이는 Circle이 Box의 모든 것을 받고 있는데 Box가 bgColor라는 props를 통해 배경색 설정 값을 받고 있기 때문이다. 

 

 

 

 

 

'FRONT > REACT' 카테고리의 다른 글

[React] Styled Component (Themes)  (0) 2022.01.20
[React] Styled Component(As, Attr)  (0) 2022.01.20
[React] Styled Component 사용하기  (0) 2022.01.19
[React] async / await  (0) 2022.01.14
[React] 노마드코더 영화 웹서비스 - Coin Tracker  (0) 2022.01.07