컴포넌트 단위로 개발하기
Component-Driven Development 을 하기 위한 도구
각각의 컴포넌트들을 따로 볼수 있게 구성해주어 한번에 하나의 컴포넌트에서 작업할 수 있게 해준다.
사용하는 이유
CSS in JS 방법론
(기존)
.alert {
border : 1px solid rgba(198, 83, 140, 0.88)
}
.button {
color : rgba(198, 83, 140, 0.88)
}
(SASS 적용)
$base-color : rgba(198, 83, 140, 0.88)
.alert {
border : 1px solid $base-color
}
.button {
color : $base-color
}
-block- - Element- -Modifier-
.header__navigation--navi-text{
color : red
}
클래스명은 BEM 방식의 이름을 여러 번 반복하여 재사용할 수 있도록 하며 HTML/CSS/SASS 파일에서도 더 일관된 코딩 구조를 만들어 줍니다.
단점
CSS 도 컴포넌트(구조화) 기반으로 개발하기 위하여 탄생
React 라이브러리
https://styled-components.com/
리액트의 컴포넌트 처럼 CSS 개별 컴포넌트를 개발한다.
장점
활용 1
import styled from "styled-component"
const Title = styled.h1` // CSS 컴포넌트, 백틱임을 잊지말자
font-size : 1.5em;
text-align : center;
color : palevioletred;
`;
const Wrapper = styled.section` // CSS 컴포넌트
padding : 4em;
background : papayawhip;
`;
export defult function App(){ // 리액트 본문 컴포넌트
return (
<Wrapper>
<Title> Hello World!</Title>
</Wrapper>
)
}
const Tomato = styled(Button)`
color : tomato;
border-color : tomato;
`;
// 기존에 Button 이라는 CSS 컴포넌트에 새로운 속성(2가지)를 추가한
Tomato 라는 새로운 CSS 컴포넌트 생성
import styled from "styled-components";
const Input = styled.input`
padding: 0.5em;
margin: 0.5em;
color: ${(props) => props.inputColor || "red"};
background: papayawhip;
border: none;
border-radius: 3px;
`;
export default function App() {
return (
<div>
<Input defaultValue="김코딩" type="text" />
// 기본 color 적용 값인 red 적용
<Input defaultValue="박해커" type="text" inputColor="blue" />
// props 개념이 적용되어 inputColor로 전달된 blue 적용
</div>
);
}
느낀점 && 미비한점
다른 것보다 Styled Component 는 정말 혁신적으로 편리했고 직관적이어서 너무 좋았다.
하지만 이것도 기본적인 CSS 실력이 받춰줘야 활용이 잘 된다는걸 느꼇다.
CSS 구조화도 결국은 CSS 문법을 갈무리 하는 것이므로 기본 CSS 문법이 밑바탕이 되어야 하는 것이고 내가 너무 부족한 걸 느낀 챕터였다.
그리고 아직 제대로 활용,실습해보지 못한 storybook 이라는 도구는 꼭 시간을 내서 공부하도록 해야겠다.