如何使用助焊剂商店

Posted

技术标签:

【中文标题】如何使用助焊剂商店【英文标题】:How To Use Flux Stores 【发布时间】:2015-02-06 18:03:54 【问题描述】:

Flux 的大多数示例都使用待办事项或聊天示例。在所有这些示例中,您存储的数据集有点小,并且保存在本地,因此不确定我计划使用的商店是否符合不断变化的“方式”。

我打算使用商店的方式有点像 ORM 存储库。一种以多种方式访问​​数据并将数据持久保存到数据服务的方法,无论是什么方式。

假设我正在构建一个项目管理系统。我可能会有这样的数据检索方法:

getIssueById 按项目获取问题 getIssuesByAssignedUser getIssueComments getIssueCommentById 等等……

我也会有这样的方法来将数据持久化到数据服务:

添加问题 更新问题 删除问题 添加问题评论 等等……

我不会做的一件主要事情是在本地存储任何问题数据(就此而言,大多数存储与数据存储相关的数据)。大多数数据对于更新很重要,因为自从我上次检索该问题以来,问题状态可能已经更新。我所有的数据检索方法可能总是向最新数据发出 API 请求。

这是违背通量“方式”的吗?以这种方式处理通量有什么问题吗?

【问题讨论】:

【参考方案1】:

我不会太拘泥于“商店”这个词。如果您希望组件呈现某些内容,则需要以某种方式创建应用程序状态。如果每次发出不同的请求时都需要清除该状态,那没问题。以下是使用 getIssueById() 的流程示例:

    组件调用 store.getIssueById(id) 返回空对象,因为问题不在商店的缓存中 商店调用 action.fetchIssue(id) 组件呈现空状态 服务器响应问题数据并调用 action.receiveIssue(data) 存储缓存该数据并调度更改事件 组件通过调用store.getIssueById(id)响应事件 问题数据返回 组件渲染数据

持久性更改类似,只有最近的服务器响应保存在存储中。

    组件中的用户交互触发 action.updateIssue(modifiedIssue) 存储处理操作,将更改发送到服务器 服务器响应更新的问题并调用 action.receiveIssue(data)

...等等,从上面的最后 4 个步骤开始。

如您所见,这实际上并不是对数据进行建模,而只是控制数据的流入和流出方式。

【讨论】:

以上是关于如何使用助焊剂商店的主要内容,如果未能解决你的问题,请参考以下文章

如何使用弹簧反应 webflux 中的单声道和助焊剂使用 DTO 制作新的单声道

助焊剂储存 - 单元测试

商店中真正属于多少状态?

如何在 Rails 中使用 npm 包?

Flux/Alt 数据依赖,如何优雅地道地处理

错误:不变违规:Store.__emitChange():必须在调度时调用