处理Reflux操作的可持续性,一致性和逻辑性方法是什么,这些操作提交了仅在本地发送到远程源的数量更改?
如果用户交互始终(或从不像大多数教程示例中那样)引起远程更改,则单向数据流非常有意义。典型案例:
CommentActions.setTitle(title)
)CommentActions.setTitle.completed(title)
子操作CommentStore#onSetTitleCompleted(title)
,并更改其状态state.title
)。另一种解决方法可能是对本地存储的每次修改都会通过远程存储中的更改进行镜像。然而,由于各种原因,这并不总是令人满意的。在很多情况下,只有在编辑完成后才调用服务器是有意义的,例如,按下“保存”或“发布”按钮。
我可以在很多情况下看到这种情况发生。例如,在不知道实现细节的情况下,似乎可能在Facebook上创建事件时,所有数据(日期,标题,描述,访客列表等)都存储在本地,直到用户点击“创建事件”按钮。
引入像CommentActions.postComment()
这样的动作似乎是合乎逻辑的,但是这会产生一个困难:与第一种情况不同,没有明显的方法可以让动作访问所有提供和编辑到的那些数据。每个动作都被提供给需要改变的数据(例如标题)。
到目前为止,我提出的最佳方法是让组件负责将正确的数据提供给操作。本地值保存在商店中,因此通过混合状态可以访问组件。当最终保存的时间时,它由例如CommentActions.postComment(this.state.title, this.state.body, this.state.email, ...)
。
我想有许多解决方案涉及避开Flux流程(例如有商店调用操作),但我主要对那些不破坏库的基本原理的解决方案感兴趣:)