tkrdrkk.xyz

ダークモード対応について

ダークモード対応、意外とめんどくさい。

  • テンプレートのままだと選択できるようになっておらず、OS設定を反映するだけ。
  • 選択できるようにしたとして、設定をどう永続化するか。(LocalStorageが一般的なようだが、SessionStorageやCache APIでもあり。)
  • ただし単純にStorageを使うと、初回レンダリング時にはデフォルト設定になり、その後追いでStorageからの読み込みが行われるため、ちらつきが発生する恐れがある。

採用した対応策

headタグ内にlocalStorageから設定を読み取り、先にグローバルクラスの設定を済ませておくようにする。

実装例

何ならreact routerの公式Docも同じ実装なので、まあよかろと。