372 文字
2 分

CSS-in-JS - styled vs css prop by Glen Maddern (styled-components)

CSS-in-JS の styled と css prop の記法について、styled-components の作者である Glen Maddern 氏による説明が行われた。

https://dev.to/a_sandrina_p/css-in-js-styled-vs-css-prop-229e#comment-1351o

コメントの内容を箇条書きでメモした。

  • 最初に styled のアプローチが人気を博したのは styled-components だと思う。

  • 最初期 Glamor が持っていた css prop が要求されたが、当時は強く反対した。

    • Glamor との差別化
      • styled-components は Glamor をベースに開発していた。
    • Runtime only のライブラリとして設計されていた。
      • Webpack と連携していた CSS Modules とは意図的に異なり、Babel 変換は不可。
        • css prop を実装できなかった。
    • 1 つだけの方法を望んでいた。
      • 他の選択肢を望むなら Glamor や Emotion を使うべき。
  • 現在は css prop をサポートしている。

  • React コンポーネントのマークアップからできるだけ多くを削除し、構造とコンテンツだけにしたかった。

    • = 多くのファイル/ディレクトリ、ローカル名を導入すること。
      • これが気に入っていた、誰もがそうではない。
    • 文脈に応じた名前を付けることを目指していた。
    return (
    <Wrapper>
    <Prompt>What is Delicious?</Prompt>
    <Answer>Pizza!</Answer>
    </Wrapper>
    );
    • css prop は避けたいノイズが多い
    return (
    <div
    css={{
    display: "flex",
    alignItems: "center",
    }}
    >
    <h2
    css={{
    ...typography.h2,
    ...borders.rounded.black,
    }}
    >
    What is Delicious?
    </h2>
    <p
    css={{
    ...typography.p.grey90.lh14,
    paddingTop: "1rem",
    }}
    >
    Pizza!
    </p>
    </div>
    );
    • <div css={Styles.item}>Pizza</div>  のようなケースでは、HTML 要素が明示的であり、CSS とマークアップ(構造とコンテンツ)が分離されおり素晴らしい。
CSS-in-JS - styled vs css prop by Glen Maddern (styled-components)
https://blog.ohirunewani.com/posts/css-in-js---styled-vs-css-prop-by-glen-maddern-st-c7af45c8033c491b97f9393cb600254d/
作者
hrdtbs
公開日
2020-08-13
ライセンス
CC BY-NC-SA 4.0