🤖

React Native Calendarsでダークモードに対応する

2023/09/23に公開

React Native ユーザーでカレンダーを実装する時に必ず候補の一択に上がってくるであろう
react-native-calendars
https://github.com/wix/react-native-calendars

動的にダークモードの切り替えを行えるように機能追加していたところ、カレンダーだけ動的にダークモードの切り替えができない現象があったので、対応方法をまとめました。

結論

keyをセットすることで解決しました。

  return (
    <Calendar
      key={theme} // ← ここ
      markingType={'multi-dot'}
      onDayPress={day => onDayPress(day)}
      oPressArrowLeft={(subtractMonth, value) => onPressArrowLeft(subtractMonth, value)}
      onPressArrowRight={(addMonth, value) => onPressArrowRight(addMonth, value)}
      theme={theme === 1 ? darkTheme : defaultTheme}
      enableSwipeMonths={true}
    />
  );

公式の見解ではありませんが、これで再レンダリングされて動的にダークモードが適用されます。

参考

https://github.com/wix/react-native-calendars/issues/982

GitHubで編集を提案

Discussion