Styled Components 라이브러리
- CSS를 컴포넌트화 시켜 HTML + JS + CSS까지 묶어서 하나의 JS파일 안에서 컴포넌트 단위로 개발할 수 있게해준다
- React 환경에서 사용 가능한 Styled Components 라는 라이브러리에 대해 알아보자.
$ npm install --save styled-components
{
"resolutions": {
"styled-components": "^5"
}
}
import styled from "styled-components"
import styled from "styled-components"
// Styled 컴포넌트 생성
const BlueButton = styled.button`
background-color: blue;
color: white;
`;
export default function App() {
// React 컴포넌트를 사용하듯이 사용.
return <BlueButton>Blue Button</BlueButton>;
}
구조는 위와 같다.
import styled from "styled-components"
// Styled 컴포넌트 생성
const BlueButton = styled.button`
background-color: blue;
color: white;
`;
//위의 BlueButton을 재활용해서 새 컴포넌트 만들기
const BigBlueButton = styled(BlueButton)`
padding: 10px;
margin-top: 10px;
`;
export default function App() {
// React 컴포넌트를 사용하듯이 사용.
return (
<>
<BlueButton>Blue Button</BlueButton>
<br />
<BigBlueButton>Big Blue Button</BigBlueButton>
</>
);
}
구조
const 컴포넌트이름 = styled.태그종류`
CSS 속성 : ${(props)=> 함수코드}
`;
예시
import styled from "styled-components";
import GlobalStyle from "./GlobalStyle";
//받아온 prop에 따라 조건부 렌더링이 가능.
const Button1 = styled.button`
background: ${(props) => (props.skyblue ? "skyblue" : "white")};
`;
//받아온 prop 값을 그대로 이용해 렌더링
const Button2 = styled.button`
background: ${(props) => (props.color ? props.color : "white")};
`;
//받아온 prop 값을 그대로 이용해 렌더링
const Button3 = styled.button`
background: ${(props) => props.color || "white"};
`;
export default function App() {
return (
<>
<GlobalStyle />
<Button1>Button1</Button1>
<Button1 skyblue>Button1</Button1>
<br />
<Button2>Button2</Button2>
<Button2 color="orange">Button2</Button2>
<Button2 color="tomato">Button2</Button2>
<br />
<Button3>Button3</Button3>
<Button3 color="pink">Button3</Button3>
<Button3 color="turquoise">Button3</Button3>
</>
);
}
import { createGlobalStyle } from "styled-components";
const GlobalStyle = createGlobalStyle`
// 전역 스타일 설정부분
`
function App() {
return (
<>
<GlobalStyle />
<App />
</>
);
}