Redux状态清除页面更改

时间:2017-11-15 17:39:30

标签: reactjs redux

我有反应容器,它连接到一个'项目'减速器。通过导航到另一个页面,例如用户个人资料,我想获得用户的项目'从服务器列出并更改状态。问题是,如果我从主页面导航,项目状态已经填充了数据,那么在用户页面上,我看到旧的几秒钟,直到它从api调用更改为止。我正在考虑为userItems创建新的reducer,但是,如果我将导航到另一个用户页面,我将看到之前的userItems几秒钟。

解决方案是获取数据并仅将其保留在反应组件状态中?而不是redux?

感谢。

2 个答案:

答案 0 :(得分:1)

我认为解决这个问题的两个更好的选择是:

  1. 如果你真的希望你的redux状态只包含相对于你正在查看的页面的'items',你可以在你的状态中包含'fetching'属性,并在你调用时显示一个加载栏API并更新您的州

  2. 您可以将用户的“项目”存储在您所在州的用户对象内的数组中,然后为相关用户显示user.items。您不一定必须在redux商店中拥有所有用户的“项目”。如果您在没有加载指示符的情况下执行此操作,则用户页面将加载没有项目,并且一旦调用API并且Redux状态更新,项目就会出现

答案 1 :(得分:0)

@Morgan Danger Hall在their answer中有正确的想法。

根据您在用户之间来回频繁的频率,您可能还需要考虑为items数组中的所有用户保留所有项目,然后为您的activeUser添加items属性具有当前正在查看的用户的id的状态。然后,您可以让显示组件按activeUser过滤items列表。

如果您最终在用户之间来回切换,这可能有助于提高性能,只要您愿意缓存以前提取的结果。

确保您了解sudo apt-get install python3-pip 列表的易变性。如果它是一个快速变化的列表,您可能根本不想缓存它!