当涉及到在REDX世界中执行任务的“正确”方式时,我有很多困惑。假设我有一个reducer,它拥有foos列表,并且这些foos可以完全加载服务器关于foo或仅部分加载的所有信息。REDX从状态获取项目或从服务器获取
在应用程序中,我有两个视图/状态,一个是我有一个foos列表,另一个是我查看单个foo的详细信息。
当我查看foo的详细信息时,我想通过几个阶段来确定是否需要从服务器获取哪些数据。这个决定过程是这样的:
1)我已直接导航到foo的详细信息视图。 Theres没有关于这个foo的redux存储,我想从服务器上检索关于foo的全套信息。
2)我在前面打,我检索有关foo的部分信息列表视图,当我查看详细信息查看我只想取我缺少的是富
3)我以前的附加信息看到一个项目的foo视图,所以我需要的信息已经在redux存储中,因此不需要从服务器获取任何其他内容。
现在忘记了redux存储中的数据将需要刷新(如果失效)这一事实。我很困惑我如何通过有条件地分派行动来实现这三件事情。我基本上想调度行动部分或完全检索数据并设置显示选定的项目。
当我在细节视图中时,我可以将foo从商店直接连接到道具如果我有我需要的所有信息。如果没有,我需要调度一个动作来完全或部分检索我的foo数据的附加数据。在这个动作的背后已经完成,reducer将完全完整的foo添加到我的状态foo的列表中,然后我想找到合适的并将其分配给组件的props/state。
虽然我理解了我需要实现的部分,但我不知道何时何地我应该完成此过程的每个部分。
为了方便起见,我们假设每个foo都有一个id,因此在我的状态下查找foo是由该id进行筛选。
希望这是有道理的,任何帮助的欢迎,并有任何常见的模式,这种“从本地状态缓存获取或回落到服务器,如果失踪”的概念。
克里斯
谢谢,我知道我可以在'componentDidMount'检查状态,然后有条件派遣如果它不存在。但是这个调度的结果会在我的状态中添加一个项目到列表中。我是否还需要注意对列表的更改,以便在添加项目时我有兴趣显示详细信息以便更新组件状态? – Owen
假设你正在连接你的组件(使用'react'中的connect''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''¡您只需输出组件的'render'函数中可用的任何redux状态。那是你在找什么? –
谢谢里克,是的,我认为如此,但似乎有可能发生的竞争条件问题。由于获取项目的请求是异步的,因此在装入组件并检查状态之前可能尚未完成,因此最终会派发另一个提取。当我所能做的只是检查状态时,你通常会做什么来确保请求已完成。你的状态会有一些“取/抓”类型的标志吗? – Owen