그럼에도 불구하고

👨‍💻

[React] Styled Component란? 본문

React/React basics

[React] Styled Component란?

zenghyun 2023. 4. 4. 18:34

 

오늘은 Styled Component에 대해 알아보겠습니다. :)

 

 

 

[ Styled Component ]

React, Vue, Angular와 같은 라이브러리, 프레임워크가 인기를 끌면서 재활용 가능한 컴포넌트 기반 개발이 주류가 되고 있습니다. 여러 컴포넌트로 분리하고, 각 컴포넌트에 HTML, CSS, JavaScript를 모두 담는 코드를 많이 사용하고 있습니다. React는 이미 JSX를 통해 HTML을 포함하고 있고, Styled Component 라이브러리를 사용하여 CSS를 JavaScript에 삽입할 수 있습니다.

 

 

[ 설치 방법 ]

npm install --save styled-components

 

 

[ SASS는 불충분한가요? ]

  • CSS 클래스명에 대한 고민 문제
  • 가이드가 없으면 복잡해지는 구조
  • 방대한 스타일 정보로 인한 스크롤 지옥
  • CSS 클래스 조건부 스타일링
  • 동적인 변화 표현에 한계

 

그렇다고 Inline Style을 사용하자니 우선순위의 문제, HTML 파일의 부피 증가, CSS 역할 분리가 모호함, media query, key frame, Pseudo selector 사용 불가 등의 문제가 있습니다.

 

[ Styled-components란? ]

  • CSS in JavaScript 기술로, JavaScript내에 CSS를 작성하는 라이브러리
  • 스타일 정의를 CSS파일이 아닌 JavaScript로 작성된 컴포넌트에 바로 삽입하는 스타일 기법
  • 클래스명을 해시값으로 자동 생성하고, 클래스명 오염을 방지할 수 있음
  • 자바스크립트의 동적인 값들을 온전하게 사용이 가능

[ 사용법 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import React from 'react';
import styled from 'styled-components';
 
const Button = styled.button`
  font: inherit;
  padding: 0.5rem 1.5rem;
  border: 1px solid #8b005d;
  color: white;
  background: #8b005d;
  box-shadow: 0 0 4px rgba(0000.26);
  cursor: pointer;
 
  &:focus {
    outline: none;
  }
 
  &:hover,
  &:active {
    background: #ac0e77;
    border-color: #ac0e77;
    box-shadow: 0 0 8px rgba(0000.26);
  }
`;
 
 
 
export default Button;
 
cs

 

 

 

위 사진과 같이 클래스명을 해시값으로 자동 생성하는 것을 볼 수 있습니다. 

'React > React basics' 카테고리의 다른 글

[React] Portal이란?  (0) 2023.04.06
[React] htmlFor란?  (0) 2023.04.06
[React] state란?  (0) 2023.03.29
[React] Components와 Props란?  (0) 2023.03.22
[React] React란?  (0) 2023.03.17
Comments