首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用flummox (通量)时,从哪里获取初始状态?

使用flummox (通量)时,从哪里获取初始状态?
EN

Stack Overflow用户
提问于 2015-05-20 22:16:06
回答 1查看 430关注 0票数 5

当使用flummox,一个通量库时,我试图找出加载初始状态的位置。我看到了一些方法,但我很好奇是否有一种推荐的方法。假设您有一些在本地存储或数据库中保存的待办事项。你从哪里拿来的,然后把它们弄到你商店的状态?

我看到它建议在react的componentDidMount中执行实际的ajax查询,并触发一个操作,将ajax的结果传递给该操作。该数据将进入存储的状态,并作为初始状态返回到视图中。

我还看到它建议在操作本身内执行ajax,而flummox似乎很好地支持它们的异步等待支持。我想在这种情况下你只会触发一些初始状态动作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 06:29:26

您不应该使用组件componentDidMount中的Ajax请求从服务器加载状态。其原因是,Flux的目的是从组件中隐藏状态获取/管理的细节。Flux实现应该为您做到这一点。

在不同的Flux实现中有很多不同的地方,而且没有正确或错误的方法。

Actions

当涉及到行动和你使用它们的目的时,有一件事需要考虑。操作应该是改变应用程序状态的东西。您可以将所有操作组合为应用于您的状态的一组事务。操作将应用程序数据从一种状态转换到另一种状态。

因此,如果您要松散所有的应用程序状态,那么您只需以正确的顺序再次应用所有的操作,最终会得到相同的状态。那为什么这很重要?因为它告诉你不要用动作做什么。

有些Flux实现倾向于混合操作(比如“更新这个todo项”)和问题(比如“给我带id 2的todo项”)。这可能很方便,但它有点模糊了行动的定义。一个问题不会变异状态,它只是从它读出来的。

问题应该作为存储上的方法来实现,比如TodoStore.getItem(id) ( Flummox似乎更喜欢它)。

答案

因此,要回答您的问题:即使获得初始状态是异步的,并且看起来很适合一个操作,因为Flummox对它们有很好的异步支持,我还是会在Store中加载初始状态(可能使用一个简单的Ajax请求,然后在存储上调用setState )。这是因为商店拥有这个州,应该知道如何处理它。然后,组件将向Store请求所有项(使用Flummox的FluxComponentfluxMixin)。它将为第一个呈现提供一个空列表,但是在Ajax请求完成后,对Store.setState()的调用将触发一个带有完整列表的重呈现。

将所有应用程序状态保持在内存

原来这是一堵墙的文字,但我还想指出一件事。大多数Flux实现(包括Flummox)都主张将整个应用程序状态保存在存储区的内存中。对于很多情况来说,这是可以的,但是如果应用程序有大量的数据,就会开始崩溃。这不仅是因为内存的使用,而且也是因为您不想在数千个对象上迭代以找到匹配的地方进行搜索,您需要一个为您处理这些问题的数据库。

因此,对于这些情况,您可能希望将状态存储在IndexedDBWebSQL中,并且很难将其与希望它成为同步内存对象的Flux实现集成。

如果您不希望在客户机上需要那么多的应用程序状态,那么您可以使用Flummox或任何其他的Flux实现,但这是要在内存中保存的东西(不是双关语)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30361315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档