Styled Component 정의
React 의 컴포넌트 기반 개발 환경에서 스타일링을 위한 CSS의 성능 향상을 위해 만들어졌다.
styled Component 를 사용하면 기존 CSS 문법으로도 스타일 속성이 추가된 React 컴포넌트를 만들 수 있다.
styled Component
1. Automatic critical CSS :
화면에 어떤 컴포넌트가 렌더링 되었는지 추적해서 해당하는 컴포넌트에 대한 스타일을 자동으로 삽입된다.
2. No class name bugs :
스스로 유니크한 className 을 생성한다. 이는 className 의 중복이나 오타로 인한 버그를 줄여준다.
3.Easier deletion of CSS :
모든 스타일 속성이 특정 컴포넌트와 연결되어 있기 때문에 만약 컴포넌트를 더 이상 사용하지 않아 삭제할 경우 이에 대한 스타일 속성도 함께 삭제된다. (기존에는 더 이상 사용하지 않거나 삭제한 컴포넌트에 해당하는 css 스타일 속성을 제거하기위해 className을 이리저리 찾아다녔음)
4. Simple dynamic styling :
className을 일일이 수동으로 관리할 필요 없이 React 의 props 나 전역 속성을 기반으로 컴포넌트에 스타일 속성을 부여하기 때문에 간단하고 직관적이다.
5. Painless maintenance :
컴포넌트에 스타일을 상속하는 속성을 찾아 다른 CSS 파일들을 검색하지 않아도 되기 때문에 코드의 크기가 커지더라도 유지보수가 어렵지 않다.
6. Automatic vendor prefixing :
개별 컴포넌트마다 기존의 CSS 를 이용하여 스타일 속성을 정의하면 될 뿐이다. 나머진 알아서 해준다.
기본형태
기존 형태는 다음과 같다.
1
2
3
4
5
6
7
|
const Button = styled.a`
display: inline-block;
border-radius: 3px;
padding: 0.5rem 0;
margin: 0.5rem 1rem;
width: 11rem;
`;
|
cs |
스타일 속성은 안에 그대로 쓰되, 첫 줄과 마지막 줄에 저런 형식을 사용해야한다.
설치 방법
Styled Component 의 설치는 간단하다. 두가지 방법이 있다.
첫번째 방법
$ npm install --save styled-components
를 치면 된다.
두번째 방법
$ yarn add styled-components
yarn이 설치되어 있다면 사용 가능!
Styled Component 에서는 package.json에 다음 코드를 추가하도록 권장하고 있다. 밑에 코드를 추가하면 여러 버전의 Styled Component가 설치되어 발생하는 문제를 줄여준다.
{
"resolutions": {
"styled-components": "^5"
}
}
베이식 룰
Passed props
컴포넌트에 props 로 스타일 속성이 전달된다면 해당 컴포넌트는 props 로 전달된 속성을 우선 적용하며, 전달되는 속성이 없다면 기본으로 설정된 속성을 적용한다.
https://styled-components.com/docs/basics#passed-props
Adapting based on props & Extending Styles
스타일 속성을 지닌 컴포넌트를 정의할 때에 함수를 전달하고, 그 함수 안에서 props 를 사용할 수 있다.
또한 같은 스타일 속성을 지닌 여러개의 컴포넌트들 중 몇 개의 컴포넌트에는 약간의 변화를 주고 싶은 경우 다음과 같이 코드를 만들면된다.
https://styled-components.com/docs/basics#adapting-based-on-props
'개발 공부 > 웹개발' 카테고리의 다른 글
[react, Css-in-JS]modal창 구현, styled 사용법, cursor, × (0) | 2021.06.08 |
---|---|
[NodeJS] mini-node-server 구현 + express 변환하기 (0) | 2021.06.01 |
[CSS] 구조적인 CSS 작성에 대한 발전 과정 (0) | 2021.06.01 |
[JavaScript] 객체 메소드assign()와 배열메소드 findIndex() 개념정리 (0) | 2021.06.01 |
[NodeJS] express 기본 개념_nodejs, express, framework 한줄설명 (0) | 2021.05.31 |
댓글