Javascript React Redux+;redux持久化:只有部分数据持久化

Javascript React Redux+;redux持久化:只有部分数据持久化,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,这是一个react本地应用程序(redux模式),使用redux persist,在用户没有internet连接时将数据持久化 问题是只有部分数据被持久化。请参见下面的屏幕截图身份验证被持久化并从异步存储加载,没有任何问题。但是其他的课程,评估。。。部分是持久的。 例如,courses/courses包含userId 1,但它是一个空对象 ****更新新屏幕截图,在以下位置使用日志自动补液: Store.js: 从“redux persist”导入{persistStore,autoRehy

这是一个react本地应用程序(redux模式),使用redux persist,在用户没有internet连接时将数据持久化

问题是只有部分数据被持久化。请参见下面的屏幕截图<代码>身份验证被持久化并从
异步存储
加载,没有任何问题。但是其他的
课程
评估
。。。部分是持久的。 例如,courses/courses包含userId 1,但它是一个空对象

****更新新屏幕截图,在以下位置使用日志自动补液: Store.js:

从“redux persist”导入{persistStore,autoRehydrate};
从“redux”导入{applyMiddleware,createStore,compose};
从“react native”导入{AsyncStorage};
从“redux thunk”导入thunk;
从“redux logger”导入createLogger;
从“/rootReducer”导入rootReducer;
const logger=createLogger();
const store=createStore(rootReducer,compose(
applyMiddleware(thunk、logger),
自动脱水()
));
persistStore(store,{storage:AsyncStorage});

导出默认存储根据我自己的经验,我建议您在redux存储中添加一个时间戳,以指示数据何时被持久化。因此,当客户机尝试从服务器获取新数据时,它可以在更新redux存储之前从服务器请求时间戳,以便与客户机的时间戳进行比较。同步客户端上的持久化数据和来自服务器的数据可能存在不一致性。

我不确定是否:

return Object.assign({}, state, {
            loading: false,
            token: action.payload.token,
            user: action.payload.userId,
            users: users
        });
这是最好的选择

根据我的经验,要使减速器保持最新,必须使用
…state

case YOUR_NAME_CASE:
            return {
                ...state,
                //Your keys for update
            }

你需要把你的问题包括进去。总而言之:“最小化–使用尽可能少的代码来产生相同的问题;完成–提供重现问题所需的所有部分;可验证–测试您将要提供的代码以确保它重现问题”。@andrewvillems大多数代码已被删除。谢谢。谢谢你的回答,但我没明白重点。你的回答与这个问题有什么关系?状态更改后不会被持久化。每次操作后,下一个状态都会被持久化。这就是redux的目的。因此,如果您想保留某些部分,那么您可以使用库提供的白名单或黑名单选项。这实际上是我的问题。nextState未被持久化!您是否可以附加处理reducer中使用的动作的分派的动作创建者?根据您的redux商店屏幕截图,您没有将数据正确合并到商店。何时调度redux持久化操作?它应该在发送任何其他操作之前完成。这可能会导致与redux存储中的数据不一致(如果在之后执行)。如果有,则检查getCourses异步操作返回的数据。你的减速器功能看起来不错,不过你可以重构一下。谢谢你的回答。让我试试。我会在这里更新。