프로젝트의 규모가 커지지고 같이 작업하는 팀원 수도 많아지면서 CSS는 더 복잡해지게 되었다. CSS 작업을 효율적으로 하기 위해 구조화된 CSS의 필요성이 커졌다.
npm install --save styled-components
터미널에 입력{
"resolutions": {
"styled-components": "^5"
}
}
import styled from "styled-components"
styled.태그종류
를 할당하고 백틱 사이에 CSS 작성하듯 작성해 준다. 만들어진 컴포넌트는 일반 컴포넌트 사용하듯 <컴포넌트명></컴포넌트명>
으로 사용하면된다.const BlueButton = styled.button`
background-color: blue;
color: white;
`;
export default function App() {
return <BlueButton>Blue Button</BlueButton>;
}
const BigBlueButton = styled(BlueButton)`
padding: 10px;
margin-top: 10px;
`;
// 재재활용
const BigRedButton = styled(BigBlueButton)`
background-color: red;
`;
props활용하기
자바스크립트 문법 사용이 가능하므로 조건부로 렌더링을 작성 할 수도 있다.
const Button1 = styled.button`
background: ${(props) => (props.skyblue ? "skyblue" : "white")};
`;
export default function App() {
return (
<>
<GlobalStyle />
<Button1>Button1</Button1>
<Button1 skyblue>Button1</Button1>
</>
);
}
전역 스타일 설정하기
1. Styled Components에서 createGlobalStyle 함수를 import하기
import { createGlobalStyle } from "styled-components";
const GlobalStyle = createGlobalStyle`
button {
padding : 5px;
margin : 2px;
border-radius : 5px;
}
`
function App() {
return (
<>
<GlobalStyle />
<Button>전역 스타일 적용하기</Button>
</>
);
}
컴포넌트 탐색기
각각의 컴포넌트들을 따로 볼 수 있게 구성해 주어 한 번에 하나의 컴포넌트에서 작업할 수 있다.
재사용성을 확대하기 위해 컴포넌트를 문서화하고, 자동으로 컴포넌트를 시각화하여 시뮬레이션할 수 있는 다양한 테스트 상태를 확인할 수 있다.
npx create-react-app storybook-practice
npx storybook init
npm run storybook
컴포넌트를 작성할 파일 만들기 ex)Title.js
파일명.stories.js 파일 만들기 ex)Title.stories.js
/.storybook 안에 있는 Storybook 설정 파일에 의해서 컴포넌트 파일과 똑같은 파일 이름에 .stories를 붙여 파일을 만들면 알아서 스토리로 인식한다.