技術とかの雑なToday I Learnedメモ

月別記事一覧実装後のバグ解決 その1

月別記事一覧実装後のバグ解決 その1

セレクトボックスのカラーがダークモードでデフォルトになっている · Issue #46 · tagucch/random.tagucch.dev

昨日に出した月別記事一覧で、早速バグがあった。

自分では見つけられなかったんだけど、すぐにyamanokuさんが見つけてIssue化してくれた。本当に感謝……。

Issue化に際しても、動作のスクショと実行環境を書いてくれていて、自分だったら絶対これやってないな……と思ったので本当に助かります。

ライトモード/ダークモードのうちライトモードのときだけ発生するバグで、ライトモードの状態でページを初期表示するとセレクトボックスだけがダークモードの色になっているというもの。

コードを追っていって、変数をconsoleに出したり画面上に出したりデバッグして分かったのだが、react-selectのcustomStylesを当てる際に使う「ライトモードかどうか」のコードで、ライトモード/ダークモードの切り替えに使っているnext-themesが提供しているuseTheme()から取得できるthemeがundefinedになっていた。

これの原因を解決するためにライトモードかどうかのbooleanをuseEffect内でセットするようにしたのだが、これだと画面が表示されたあとにラグがあって切り替わる(ComponentDidMountと同等なので)

どうしよと思って症状を呟いたら、速攻でuhyoさんがアドバイスくれた。

useLayoutEffectを使ったら無事ラグがなくなりました。本当に感謝。

fix: ライトモードなのにセレクトボックスのデフォルトカラーがダークモードの色になっている問題の修正 by tagucch · Pull Request #47 · tagucch/random.tagucch.dev