CSS-in-JS

次にCSS-in-JSという手法で、コンポーネント内にCSSも一緒に書くものになります。

その中でもstyled-componentsというライブラリを用いるのが最も人気であり、扱いやすいため、styled-componentsを使った手法を説明します。

まずは、styles-componentsをインストールしましょう。

npm install styled-components

また、TypeScriptでの実装になるので、@types/styled-componentsもインストールします。

npm install @types/styled-components

では、BreadcrumbコンポーネントにCSSを当てていきましょう。まず、Breadcrumb.tsxstyled-componentsstyledをimportします。

Breadcrumb.tsx◎
import { useState } from "react";
import styles from "./Breadcrumb.module.css";
import styled from "styled-components";

...

使い方として、<p>itemがありません。</p><p>itemが{items.length}あります</p>にCSSを当てたいとします。その場合styled.p`当てたいCSS`のようにして、CSSを当てたpタグを作成することができます。記述する場所に関してですが、コンポーネントの外側に記述するようにしましょう。以下にてNoticeParagraphというCSSを当てたpタグを生成することができました。

Breadcrumb.tsx◎
...
type Props = {
  items: string[];
};

const NoticeParagraph = styled.p`
  font-weight: 100;
  color: gray;
`;
...

上記を利用するには、通常のタグのように記述します。

ブラウザにて以下のように確認できるかと思います。

また、styled-componentにて作成したタグもpropsを受け取ることができ、styled.p<型>のようにジェネリクスに型を宣言することで受け取ることができます。

まずは受け取る型エイリアスを宣言しましょう。

宣言した型をジェネリクスにて宣言し、呼び出し方は${(props) => 処理}のように記述します。

今回は、isBlanktrueの場合はredfalseの場合はgrayの文字列を返却し、colorisBlankによって変化するようにします。

そして呼び出す部分にて、propsを渡します。ちなみにboolean型のpropsの場合は、trueの場合そのprops名のみを記述するだけでtrueを渡すことができます。

App.tsxにて、空のitemsを渡しましょう。

ブラウザにて以下のように確認できるかと思います。

Last updated