[styled-components] styled-components란?
글 작성자: 망고좋아
반응형
🎯 styled-components란?
- 자바스크립트 파일 안에 스타일을 정의하고, React 컴포넌트처럼 활용할 수 있다.
- 자바스크립트 코드와 긴밀히 연계하여 다양한 코드를 작성할 수 있다. (변수 생성, 반복문, 조건문, 함수, 모듈)
- 별도의 CSS 파일을 만들지 않고 하나의 파일 안에 스타일을 관리하고 싶을 때 유리하다.
- 스타일 코드와 컴포넌트 코드 간의 결합을 나누고 싶을 때 유리하다.
- tagged template literal이라는 문법을 활용할 수 있다.
- CSS 코드에 post-css, minification, Sass 적용할 수 있다.
- CSS 코드를 겹치지 않게 처리해준다.
- 클래스 이름 자체가 hash다. ⇒ 겹치지 않는다. 해당 컴포넌트에만 스타일 적용된다.
📝 styled-components 예시 1
const Container = styled.div`
width: 400px;
height: 400px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid rgba(0, 0, 0, 0.3);
`;
const Button = styled.button`
background: orangered;
color: white;
padding: 12px 40px;
border: none;
`;
function Sample() {
return (
<Container>
<Button>Submit</Button>
</Container>
);
}
📝 styled-components 예시 2
const Button = styled.button`
background: ${({ clicked }) => (clicked ? "orangered" : "lavender")};
color: ${({ clicked }) => (clicked ? "lavender" : "orangered")};
padding: 12px 40px;
border: none;
`;
function Sample() {
const [clicked, setClicked] = useState(false);
return (
<Container>
<Button onClick={() => setClicked((bool) => !bool)} clicked={clicked}>
Submit
</Button>
</Container>
);
}
- 원래 버튼에는 clicked라는 속성이 없지만 styled-components에서 clicked 변수를 활용해서 특정 스타일 처리를 토글링 해줄 수 있다.
- 이렇게 안 해주면 순수 css에는 클래스명을 주고 빼고 하는 등의 처리를 해줘야 된다. ⇒ 추상화가 덜 된 느낌
📝 styled-components 예시 3
const List = styled.ul`
display: flex;
flex-direction: column;
`;
const ListItem = styled.li`
padding: 20px 100px;
background: orangered;
color: white;
& + & {
margin-top: 8px;
}
`;
function Sample2() {
return (
<List>
<ListItem>List one</ListItem>
<ListItem>List two</ListItem>
<ListItem>List three</ListItem>
</List>
);
}
반응형
'프로그래밍 > React' 카테고리의 다른 글
[React] Flux Pattern (0) | 2022.01.16 |
---|---|
[React] 상태관리란 무엇인가? (0) | 2022.01.16 |
[React] 리액트 앱에서의 스타일링 방법 (0) | 2022.01.11 |
[React] 리액트 useReducer사용법 (0) | 2022.01.03 |
[React] 리액트 useRef사용법 (0) | 2022.01.03 |
댓글
이 글 공유하기
다른 글
-
[React] Flux Pattern
[React] Flux Pattern
2022.01.16 -
[React] 상태관리란 무엇인가?
[React] 상태관리란 무엇인가?
2022.01.16 -
[React] 리액트 앱에서의 스타일링 방법
[React] 리액트 앱에서의 스타일링 방법
2022.01.11 -
[React] 리액트 useReducer사용법
[React] 리액트 useReducer사용법
2022.01.03