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 を実装できなかった。
- Webpack と連携していた CSS Modules とは意図的に異なり、Babel 変換は不可。
- 1 つだけの方法を望んでいた。
- 他の選択肢を望むなら Glamor や Emotion を使うべき。
- Glamor との差別化
-
現在は css prop をサポートしている。
-
React コンポーネントのマークアップからできるだけ多くを削除し、構造とコンテンツだけにしたかった。
- = 多くのファイル/ディレクトリ、ローカル名を導入すること。
- これが気に入っていた、誰もがそうではない。
- 文脈に応じた名前を付けることを目指していた。
return (<Wrapper><Prompt>What is Delicious?</Prompt><Answer>Pizza!</Answer></Wrapper>);- css prop は避けたいノイズが多い
return (<divcss={{display: "flex",alignItems: "center",}}><h2css={{...typography.h2,...borders.rounded.black,}}>What is Delicious?</h2><pcss={{...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/