styled-componentsのpropsにつける「$」プレフィックスについて

styled-components$ プレフィックスをつけることを、「Transient props」と呼ばれています。

これは、スタイリングのために内部的に使用されることを明示し、基礎となるReactノードに渡すことを防ぐために利用します。

例えば、次のようなコードがあるとします。

import styled from 'styled-components';
import Header from './Header';


const NewHeader = styled(Header)<{ customColor: string }>`
  color: ${(props) => props.customColor};
`;
// Header will also receive props.customColor
この時、基礎となるHeaderコンポーネントまで渡されることになります。

customColorプロパティがHeaderコンポーネントに転送するべきでない場合は、$プレフィックスをつけることでtransient propsとして利用できるようになります。
import styled from 'styled-components';
import Header from './Header';


const NewHeader2 = styled(Header)<{ $customColor: string }>`
  color: ${(props) => props.$customColor};
`;
// Header does NOT receive props.$customColor

これの活躍する場面は、外部ライブラリのコンポーネントを利用しているときに、styledするコンポーネントまで転送したくない時に役立ちます。

シェア!

この記事を書いた人

kenichiのアバター kenichi エンジニア・写真家 | Engineer and photographer

日本全国と海外を旅するノマドワーカー。5年間、技術営業として働いたのち独立。
フリーランスエンジニアとしてWebサイト制作やアプリケーション開発を行う。面白い人たちの面白いを世に届けるべく行動中。
2024年11月にポルトガルへ移住🇵🇹

目次