styled-componentsの導入

create-react-appで作成したReactプロジェクトにstyled-componentsを導入してみます。また、実際にstyled-componentsを利用しているプロジェクトからstyled-componentsの活用方法を調べます。

プロジェクト構築

create-react-app

まずは、create-react-appで新規Reactプロジェクトを構築します。

npx create-react-app styled-components-app

src/App.js
( styled-componentsを利用してない )

classNameプロパティ でスタイルを反映しています。

import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

src/App.css

.App {
  text-align: center;
}

.App-logo {
  height: 40vmin;
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #09d3ac;
}

styled-components導入

インストール

styled-components をインストールします。

npm install --save styled-components

src/App.js
( styled-componentsを利用 )

styled-components を利用して、src/App.js を実装し直します。

import React from 'react';
import logo from './logo.svg';
// import './App.css';
import styled from 'styled-components';

function App() {
  return (
    <Wrapper>
      <Header>
        <Logo src={logo} alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <Link
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </Link>
      </Header>
    </Wrapper>
  );
}

const Wrapper = styled.div`
  text-align: center;
`;

const Header = styled.header`
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
`;

const Logo = styled.img`
  height: 40vmin;
`;

const Link = styled.a`
  color: #09d3ac;
`;

export default App;

以下、生成されたコードです。

717-react-styled-components_code.png

styled-componentsの活用例

実際に styled-components を利用しているリポジトリから活用例を確認してみます。

例として、https://github.com/withspectrum/spectrumでのstyled-componentsの活用例を取り上げます。

グローバル

テーマカラー

その他

上記のような活用方法も以下コンポーネントから参考にできると思います。

参考・関連