Redux-ToolkitにFirebaseのTimestampをいれるときのエラー処理

Redux-Toolkitでデータをstateにいれておくときに、firebaseのtimestampフォーマットをそのままいれると”A non-serializable value was detected in the state”のようなエラーがでます。これはTimestampのクラスがそのままでは登録できないためです。

そももそデータをオブジェクトに変換して取り扱えばOKですが、イージーに回避する方法としては、以下を参考にstoreにmiddlewareを追加することです。

configureStore({
  //...
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: {
        ignoredActions: ['your/action/type'],
      },
    }),
})

問題のあるActionを指定すればOKです。エラー画面に

”Take a look at the reducer(s) handling this action type: XXXX.”

のようにでているとおもいますのでこのXXXXの部分を上記のignoredActionsに指定すればOKです。

なお、以下のブログで紹介されているような、すべてのチェックをオフにするのはおすすめされていません。

middleware: getDefaultMiddleware =>
    getDefaultMiddleware({
      serializableCheck: false,
    }),