1 minute read

기존에 컴포넌트 구조로 CSS 작업을 하는 Styled-Components를 사용했는데,

이번에 주니어로 입사 하면서, 팀에서 사용하는 Styled-System을 공부하게 됐다.

둘의 차이점은 무엇일까?? 그리고 Styled-System이란 무엇일까??

(사전준비)

$ npm i styled-system styled-components
// styled-system과 styled-componets 설치

우선, Styled-Componets의 구조를 보자.

import React from "react";
import styled from "styled-components";

const Test = () => {
  return <StyledTest>Hello</StyledTest>;
};

const StyledTest = styled.div`
  color: red;
  margin: auto;
  font-size: 10rem;
`;

export default Test;

import한 styled로 컴포넌트를 생성하고, 해당 선언문 내에서 CSS 스타일링을 해줬다.

이번에는 Styled-System의 구조를 보자.

import React from "react";
import styled from "styled-components";
import { color } from "styled-system";

const Test = () => {
  return (
    <StyledTest color="red" m="auto" fontSize="10rem">
      Hello
    </StyledTest>
  );
};

const StyledTest = styled.div`
  ${color}
  ${space}
  ${typography}
`;

export default Test;

마찬가지로 styled를 import 하고 컴포넌트를 생성해주지만, 해당 선언문 내에서 CSS를

스타일링 하는게 아니고, 해당 선언문 내에서는 styled-system의 API만을 가져오고,

컴포넌트 태그 내에서 inline-style 방식으로 스타일링 한다.

이 때, styled는 “styled-componets”로부터 import해도 되지만,

@emotion/styled에서 import해서 사용할 수도 있다.

import React from "react";
import styled from "@emotion/styled";
import { color } from "styled-system";

const Test = () => {
  return (
    <StyledTest color="red" m="auto" fontSize="10rem">
      Hello
    </StyledTest>
  );
};

const StyledTest = styled("div")(color, space, typography);
export default Test;

다만, 컴포넌트 생성에서 styled를 활용하는 방식이 다르니 유의하자.

Styled-Componets와 Styled-System의 차이점을 알아봤는데,

사실 무엇이 더 좋고 무엇이 더 나쁘다고 말 할 수 있을것 같지는 않다.

일을 진행하면서, 협업을 하면서, 필요에 의해 어떤 방식이 편리한지

합의 후에 편리하게 사용하면 될 것 같다. (뇌피셜)

Updated: