在 "Reflux" 中,操作的目的是什么?
In "Reflux", what purpose do actions serve?
我正在熟悉 Flux 架构和 Reflux - 更简单的版本,没有调度程序 - 用于 ReactJS。
在完整的 Flux 中,听起来操作具有(或至少可以具有)明确且重要的目的:它们可用于更新外部服务(例如,将数据保存回服务器)通过 API),如这个问题所述:Should flux stores, or actions (or both) touch external services?
然而,在 Reflux 中,动作绝对只是愚蠢的消息解析器。所以我的问题是,它们的作用是什么?为什么要有它们?如果您的 Views/Components 只是直接调用商店中的方法,会发生什么不好的事情?
我正准备将我的小应用程序从 Flux 转换为 Reflux,看起来我会将当前在我的操作中的所有逻辑都转移到商店中。在我看来,Reflux 中的操作除了充当组件和商店之间无用的中间人之外别无他法。我错过了什么?
除了 OP 评论中指出的在任意数量的商店中监听动作的能力:
Reflux 操作也可以触及 API 等,例如将其放置在 preEmit action hook 中。通常您会创建一个异步操作,在 preEmit 挂钩中添加一些异步内容,然后在异步工作完成(或失败)时调用 "completed" 或 "failed" 子操作。当然,您也可以在 preEmit 挂钩中进行同步工作。想到日志记录。
也完全有可能在商店中监听一个动作并在商店中执行异步工作,然后从那里调用 .completed 或 .failed,但我认为已经形成的共识是商店不应该做这项工作,商店应该只对变化的数据做出反应,而不是执行业务逻辑。
异步操作也 work as promises。当然你也可以实现你的商店来做到这一点,但我认为这对数据存储来说是很多责任。
我正在熟悉 Flux 架构和 Reflux - 更简单的版本,没有调度程序 - 用于 ReactJS。
在完整的 Flux 中,听起来操作具有(或至少可以具有)明确且重要的目的:它们可用于更新外部服务(例如,将数据保存回服务器)通过 API),如这个问题所述:Should flux stores, or actions (or both) touch external services?
然而,在 Reflux 中,动作绝对只是愚蠢的消息解析器。所以我的问题是,它们的作用是什么?为什么要有它们?如果您的 Views/Components 只是直接调用商店中的方法,会发生什么不好的事情?
我正准备将我的小应用程序从 Flux 转换为 Reflux,看起来我会将当前在我的操作中的所有逻辑都转移到商店中。在我看来,Reflux 中的操作除了充当组件和商店之间无用的中间人之外别无他法。我错过了什么?
除了 OP 评论中指出的在任意数量的商店中监听动作的能力:
Reflux 操作也可以触及 API 等,例如将其放置在 preEmit action hook 中。通常您会创建一个异步操作,在 preEmit 挂钩中添加一些异步内容,然后在异步工作完成(或失败)时调用 "completed" 或 "failed" 子操作。当然,您也可以在 preEmit 挂钩中进行同步工作。想到日志记录。
也完全有可能在商店中监听一个动作并在商店中执行异步工作,然后从那里调用 .completed 或 .failed,但我认为已经形成的共识是商店不应该做这项工作,商店应该只对变化的数据做出反应,而不是执行业务逻辑。
异步操作也 work as promises。当然你也可以实现你的商店来做到这一点,但我认为这对数据存储来说是很多责任。