본문 바로가기
React

Styled Components

by hjcode 2019. 12. 8.

 

Styled Components를 사용하면 Sass를 따로 설치하지 않고도 사용할 수 있고

클래스명 없이도 스타일을 작업할 수 있다.

 

설치 : npm install --save styled-components

 

import React, { Component, Fragment } from "react";
import styled, { createGlobalStyle } from "styled-components";

const GlobalStyle = createGlobalStyle`
    body {
        padding: 50px;
        margin: 0;
        background: pink;
    }
`;

class App extends Component {
  render() {
    return (
      <Fragment>
        <GlobalStyle />
        <Button>Hello</Button>
        <Button danger>Hello</Button>
        <Anchor href="http://google.com">go to Google</Anchor>
      </Fragment>
    );
  }
}

const Button = styled.button`
  border-radius: 50px;
  padding: 5px;
  min-width: 120px;
  color: white;
  font-weight: 600;
  -webkit-appearance: none;
  cursor: pointer;
  &:active,
  &:focus {
    outline: none;
  }
  background-color: ${props => (props.danger ? "#ff6b6b" : "#1dd1a1")};
`;

const Anchor = styled(Button.withComponent("a"))`
  text-decoration: none;
`;

export default App;

 

import styled from 'styled-components'; 를 import 해주고 Button이라는 변수에 styled를 쓰고

그 뒤에 .html 태그를 붙인다. style.<html tag>

그리고 백틱안에 스타일을 작성해주면 된다. props로 스타일을 변경할 수도 있다.

 

body에 들어간 padding, margin 등은 createGlobalStyle을 import 하여서 스타일을 줄 수 있다.

따로 컴포넌트를 만들지 않아도 된다.

 

위에 코드처럼 Anchor라는 컴포넌트에 Button 컴포넌트의 스타일을 재사용하고 싶다면

withComponent를 사용하여 위와 같이 사용할 수 있고 css를 따로 추가하고 싶다면

뒤에 백틱을 넣어서 추가해주면 된다.

반응형

'React' 카테고리의 다른 글

smart component, dumb component  (0) 2019.12.02