ダークモード対応について
ダークモード対応、意外とめんどくさい。
- テンプレートのままだと選択できるようになっておらず、OS設定を反映するだけ。
- 選択できるようにしたとして、設定をどう永続化するか。(LocalStorageが一般的なようだが、SessionStorageやCache APIでもあり。)
- ただし単純にStorageを使うと、初回レンダリング時にはデフォルト設定になり、その後追いでStorageからの読み込みが行われるため、ちらつきが発生する恐れがある。
採用した対応策
head
タグ内にlocalStorageから設定を読み取り、先にグローバルクラスの設定を済ませておくようにする。
何ならreact router
の公式Docも同じ実装なので、まあよかろと。