0

我正在使用redux-offline,下面是我创建商店的方式


let customConfig = {
    ...offlineConfig,
    persistOptions:{
        key: 'root',
        transforms: [immutableTransform()],
    },
    returnPromises : false,
    persistCallback : () => {this.setState({rehydrated : true})}
};

const { middleware, enhanceReducer, enhanceStore } = createOffline(customConfig);
let middlewares = applyMiddleware(offlineCommitHandler,thunk,middleware,);
store = createStore(enhanceReducer(IndexReducer),undefined,compose(enhanceStore,middlewares,persistAutoRehydrate({log:true})));

我有多个减速器。

该问题仅发生在对一个减速器进行再水合时,例如:reducerA

我在 autoRehydrate 中放置了一个调试器

  • 首次打开应用程序时,它会合并 reducerA 的数据
  • 当打开应用程序时,reducerA 的第二次入站状态为 null
4

2 回答 2

0

我从来没有做过离线配置,但我遇到了与 redux-persist 类似的问题。所以首先你要确保你的调试器和你的设备/仿真器没有及时漂移。这会一直给我带来问题,只需重新启动我用于调试的模拟器和 chrome 选项卡就可以解决它。其次,您要检查减速器中是否没有任何错误。就我而言,我没有遵循不变性模式,这有时会导致 redux 无法持久化我的状态,因为它没有看到旧状态和新状态之间的任何区别。

于 2018-10-11T08:48:02.047 回答
0

对于任何寻找类似问题答案的人。

我的问题是我试图存储的数据达到了 asyncStorage 的最大存储限制。

https://github.com/rt2zz/redux-persist/issues/199

我不得不改用filestorage而不是asyncStorage来让redux持久存储数据

于 2018-10-12T06:13:39.387 回答