emotionをReactと組み合わせて使う場合、基本的には以下の動きをする(SSRが入るとちょっと違う)
- css`` あるいは styled.hoge`` が、SerializedStyles (ほぼ書いたとおりの状態のスタイルを表現するオブジェクト)を作る。ハッシュ+ラベルでnameがつく。
- ラップするための「jsx」関数か「styled」のコンポーネントが、React Contextを使ってEmotionCacheを探し出して、SerializedStylesをinsertStyles()する。
- EmotionCacheが、stylisでSerializedStylesを加工する(実際に使われるスタイルはここでできる)。
- stylisプラグインが、StyleSheetオブジェクトを経由して、containerに指定された要素(デフォルトではdocument.head)にstyle要素を挿入する。
- 「jsx」関数か「styled」コンポーネントが、スタイル適用された要素をclassNameを渡すことで作る。
Reactでない他の枠組みと統合するときは、以下を作ることになるかなという感じ。
- cacheをつくるところ
- (SerializedStyleを作るところ→css`` をそのまま使うのでもあり)
- cacheを見つけてinsertするところ
0 件のコメント:
コメントを投稿