6

我正在使用 redux-toolkit 实现反应应用程序,并且在从 firestore 获取数据时出现此类错误。

在路径中的操作中检测到​​不可序列化的值:payload.0.timestamps.registeredAt

在路径中的操作中检测到​​不可序列化的值:payload.0.profile.location

前者的数据类型是firebase.firestore.Timestamp,后者是GeoPoint
我认为两者都可能无法序列化,但我想获取这些数据并将它们展示给用户。
我怎样才能克服这些错误?
根据这个问题,我可能会这样写;

const store = configureStore({
 reducer: rootReducer,
 middleware: [
  ...getDefaultMiddleware({
  serializableCheck: {
     ignoredActionPaths: ['meta.arg', 'meta.timestamp'], // replace the left to my path
     },
  }),
  reduxWebsocketMiddleware,
 // ... your other middleware
],
});

但是我不确定它是否安全,即使是这样,我也不知道如何编写路径动态方式,因为我的有效负载是数组。


如果有人提供一些线索,我将不胜感激。

4

2 回答 2

6

检查出来

使用 redux 工具包时出现错误“在状态中检测到不可序列化的值” - 但不是正常的 redux

因此,根据 Rahad Rahman 的回答,我在 store.ts 中执行了以下操作:

export default configureStore({
    reducer: {
        counter: counterReducer,
        searchShoes: searchShoesReducer,
    },    
    middleware: (getDefaultMiddleware) => getDefaultMiddleware({
        serializableCheck: false
    }),
});
于 2020-11-05T02:48:33.100 回答
0

解决此问题的最佳方法是将数据转换为可序列化的内容,您可以安全地存储在您的状态中。根据样式指南,您不应该将不可序列化的值放在 State 或 Actions中。

一个很好的地方是在 reducerprepare函数中。

于 2020-11-06T11:42:21.573 回答