それがまさに私たちが作った理由injectGlobal
です。私たちのドキュメントを見ると、次のように書かれています。
これを使用することはお勧めしません。1 つのファイルに含まれるアプリごとに最大 1 回使用します。これは脱出用のハッチです。まれな@font-face
定義またはボディ スタイリングにのみ使用してください。
したがって、次のglobal-styles.js
コードを含むという名前の JS ファイルを作成します。
// global-styles.js
import { injectGlobal } from 'styled-components';
injectGlobal`
@font-face {
font-family: 'My custom family';
src: url('my-source.ttf');
}
`
ご覧のとおり、ここで行うことは、グローバル スタイルを挿入することだけです。この場合は@font-face
. これを機能させるために最後に必要なことは、このファイルをメイン エントリ ポイントにインポートすることです。
// index.js
import './global-styles.js'
// More stuff here like ReactDOM.render(...)
これは、font-face が 1 回だけ注入されることを意味しますが、それでもすべてのコンポーネントがfont-family: 'My custom family'
!でそれにアクセスできます。
このようにすると、flash-of-invisible-text (FOIT) が表示されますが、これは何の関係もありませんstyled-components
。通常の CSS を使用している場合も同様です。@font-face
FOIT を取り除くには、単なるingではなく、より高度なフォント読み込み戦略が必要です。
これは とは何の関係もないので、Front End Centerstyled-components
の 2 つのエピソードを見て、これを行う最善の方法について詳しく学ぶことを強くお勧めします。