Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React 19でお手軽にCSS-in-JSを自作する
Search
Yuku Kotani
December 30, 2024
Programming
1k
6
Share
React 19でお手軽にCSS-in-JSを自作する
Nihonbashi.js #9
https://nihonbashi-js.connpass.com/event/332328/
Yuku Kotani
December 30, 2024
More Decks by Yuku Kotani
See All by Yuku Kotani
一億総業務改善を支える社内AIエージェント基盤の要諦
yukukotani
9
3.4k
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
6
2.7k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
11
5.5k
AI Coding Agent Enablement in TypeScript
yukukotani
21
17k
AI Coding Agent Enablement - エージェントを自走させよう
yukukotani
14
8.3k
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
3
860
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
12
3.5k
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
15
8.2k
Capacitor製のWebViewアプリからReact Native製のハイブリッドアプリへ
yukukotani
5
2k
Other Decks in Programming
See All in Programming
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
240
第3木曜LT会 #28
tinykitten
PRO
0
110
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
350
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
570
Making the RBS Parser Faster
soutaro
0
490
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
210
Angular Signal Forms
debug_mode
0
110
Running Swift without an OS
kishikawakatsumi
0
850
事業会社でのセキュリティ長期インターンについて
masachikaura
0
260
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
990
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
感情を設計する
ichimichi
5
1.5k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
140
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A better future with KSS
kneath
240
18k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Tell your own story through comics
letsgokoyo
1
900
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Are puppies a ranking factor?
jonoalderson
1
3.3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
210
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
Transcript
React 19でお手軽に CSS-in-JSを自作する @yukukotani 2024/10/31 - Nihonbashi.js #9
自己紹介 小谷 優空 - @yukukotani ・VP of Technology @ Ubie,
Inc. ・Maintainer of KumaUI ・Student @ Univ. Tsukuba
CSS-in-JS? JavaScriptコード内でCSSも書ける君。Reactでよく使われる 有名どころは styled-components とか emotion とか
作ってみよう
簡単ですね style属性を埋め込むだけの高階関数
嬉しいですね 色がつきました
嬉しくない たくさん描画するとスタイルが重複して、サイズが爆発する
そう簡単には作れない 世の中のCSS-in-JSは色々頑張っていX <head>にstyleを差し込んで参照することで同じスタイルをまとめX → useLayoutEffectを使うのでSSRでは動かない b SSRの描画中に必要なstyleをメモしておいて最後に差し込
フレームワークによっては無駄に2回描画関数が走る
スタイルシート・・・重複・・・? 聞き覚えが・・・?
React 19 で組み込みサポートが拡充 なんか良くなったらしいぞ https://ja.react.dev/blog/2024/04/25/react-19
React 19 で組み込みサポートが拡充 インラインでstyleタグを描画すると href属性をキーとして重複排除しながらheadに差し込んでくれる https://ja.react.dev/reference/react-dom/components/style
作ってみよう style属性の代わりにstyleタグを差し込み、classNameで重複排除&参照 オブジェクトからCSSに変換 インラインstyleタグを差し込む classでスタイルを参照
作ってみよう スタイルシートのハッシュで一意なclassNameを生成 キーをケバブケースにしてるだけ backgroundColor -> background-color
嬉しいね headに1つだけstyleを差し込みclassで参照 重複するスタイル定義がなくなっている React が勝手に head に持っていってくれる 同じクラスを参照するだけ
本当に重複しないかな? スタイルの一部が動的に決まるコンポーネントを考える background-color を プロパティで変える
本当に重複しないかな? プロパティを変えて同時に描画してみる
本当に重複しないかな? `color: red;` が全クラスで重複しちゃうね(涙)
Atomic CSS にする コンポーネントに必要なスタイルを1つのクラスに押し込めるのではなく、 プロパティと値のペアそれぞれで独立したクラスを作る
Atomic CSS にする
嬉しいね `color: red;` が1つになった
ありがとうございました このテクを使ったライブラリを作ったので使ってね