了解助焊剂模式


12

我实际上正在研究流量模式,关于商店我有些不了解。

他们到底是什么?

我已经阅读了许多文章,似乎与该领域有关。

这是否意味着这是与api调用或后端调用相关的“抽象”部分?

对我来说不是很清楚。

编辑:可能与角度工厂相同吗?获取远程数据,执行业务任务或存储某些应用程序状态(例如,当前连接的用户)?


1
链接到您正在谈论的内容将很有帮助。您是说这种“通量模式”吗? fluxxor.com/what-is-flux.html
DougM


Flux就是发布/订阅模式,它具有所有数据首先通过调度程序的约束。它确保数据不会向后退(并引起混乱)。诸如“存储”,“动作”等之类的东西只是表达系统组件和传递数据的另一种方式。
kiwicomb123

Answers:


23

好吧,让我从逐步介绍一下

1什么是助焊剂?

  • 一种模式
  • 集中调度员
  • 单向数据流
  • 项目清单

他们也称其为Flux是有原因的。

助焊剂实施

  • Facebook的通量
  • Alt键
  • 反流
  • 氟mm
  • 核JS
  • 会变

在此处输入图片说明

与Flux聊天

反应:嗨,行动,有人点击了“保存课程”按钮。

行动:谢谢React!我在调度员处注册了一个动作创建者,因此调度员应注意通知所有需要注意的商店。

调度员:让我看看谁关心课程的保存。啊! 看起来该商店已向我注册了回调,所以我会让她知道。

店铺:调度员,大家好!感谢更新!我将使用您发送的有效负载更新数据。然后,我将为关心的React组件发出一个事件。

反应:哦!来自商店的闪亮新数据!我将更新用户界面以反映这一点!


助焊剂API


register(function callback) –“嘿调度员,当发生动作时运行我。-商店”

unregister(string id) –“调度员,别担心这个动作。-商店”

waitFor(array ids) –“首先更新此商店。-商店”

dispatch(对象有效负载) -“嘿调度程序,告诉商店有关此操作的信息。-行动”

isDispatching() –“我正在忙于分派回调。”

所以我们想到的问题是

那么Flux是发布-订阅模型吗?

不完全的。

有两种不同:

1,每个有效负载都分派给所有已注册的回调

2,回调可以等待其他回调

摘要

Flux是单向数据流的一种模式动作封装了事件Dispatcher是一个保存回调的中央集线器存储了保存应用程序状态的许多实现


我的第一个问题是状态允许应用程序具有远程api实体的不同数据:-/
mfrachet

您所说的国家允许是什么意思?发出更改的地方将其称为“反应视图”,并再次称为状态更改方法
Dhaval Patel

承认我使用flux构建了一个应用程序。我正在处理API,然后将数据保存在商店中。如果用户修改远程数据怎么办?我将在客户端和服务器之间有所不同
mfrachet 2015年

现在我在哪里可以找到原因。如果所有调度员和商店都要做转发视图,那么为什么不能直接操作更新视图。为什么会有中间人
穆罕默德·乌默尔

@MuhammadUmer:Dispatcher是一种用于应用程序的存储,它是基于应用程序中的组件存储的,因此为了消除冗余中间人而被引入
Dhaval Patel

1

查找一个简单的示例(https://github.com/facebook/flux/tree/master/examples/flux-todomvc/),“商店管理应用程序中特定域的应用程序状态。”也就是说,它们包含有关应用程序一个方面的状态的数据以及更改它的所有代码。每当分派器有新的更新时,所有商店都将看到该更新,他们决定如何响应来更新其数据,然后通知视图数据已更改。在示例中,商店包含诸如“看不见的线程列表”(Dispatcher在其中通知他们新消息已到或已阅读旧消息,并且视图向用户显示消息线程)和“当前播放时间以及州。”

从技术上讲,它们是框架的中间层,向Dispatcher注册回调以接收更新,然后在数据状态更改时通知View。(然后,视图可能会将动作发送回Dispatcher。)它们实现了一个抽象接口,其中每个Store向Dispatcher注册一个回调,并将事件广播到View,但是每个Store似乎都以一种具体的方式代表了一个特定的域。(是否有反例?)


0

存储是存储应用程序状态和复杂逻辑的代码区域。它们的原因是,多个视图可能会使用相同的数据,但是以不同的方式显示它们,或者显示特定域的一些但不是全部数据。例如,用户登录后,您会收到他们的名字,姓氏,电子邮件,照片,城镇,地址号码,电话号码等。此信息显示在单独的视图中。可以使用一个名为UserStore的商店为用户存储数据,而不是在视图之间复制数据。通过在必须更改逻辑或数据时给“一个更改位置”来简化系统。使用商店的其他原因很多,但是我认为这是最明显的原因。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.