Flux是Facebook提出的一种新的架构模式。一个Flux架构一般分为4个部分:
- View:视图层(界面)
- Action:视图层发出的消息或事件,如点击按钮
- Dispatcher:派发器,用来接受Actions、执行回调函数
- Store:数据层,用来存放应用状态,一旦发生变动,就要通知Views更新界面
执行流程
- 用户操作(访问)View
- View发出用户的Action给Dispatcher
- Dispatcher接收到Action,通知Store更新数据(比如更新Store里checkbox的选中状态)
- Store更新后,通知View进行界面刷新
- View收到通知后,更新界面。
看个例子:
现在有一个菜单叫MenuView 和一个目内容页叫ContentView,对应存储菜单数据的叫MenuStore、存储内容页数据的叫ContentStore,一个分发器Dispatcher、定义了两个动作叫MenuAction和ContentAction。我们现在模拟菜单的点击(itemClicked)看看数据是如何流转的,最后又是如何更新在界面上的。
先来看看涉及类的类图:
java代码:
/**
*
* Flux is the application architecture that Facebook uses for building client-side web
* applications. Flux eschews MVC in favor of a unidirectional data flow. When a user interacts with
* a React view, the view propagates an action through a central dispatcher, to the various stores
* that hold the application'