《React-Native系列》22、 Flux框架Demo详解
来源:互联网 发布:3322软件站 编辑:程序博客网 时间:2024/06/16 04:49
今天我们来结合一个简单的Demo来讲解Flux框架,让大家了解Flux框架的真面目。
先上一张比较漂亮的图(对漂亮的图,总是没有抵抗力:-) )。
我们再来回顾下Flux框架的四大组成部分
- View: 视图层
- Action(动作):视图层发出的消息(比如mouseClick)
- Dispatcher(派发器):用来接收Actions、执行回调函数
- Store(数据层):用来存放应用的状态,一旦发生变动,就提醒Views要更新页面
1、View
View很简单,我们定义了一个按钮,绑定了createNewItem方法,这个方法向Dispatcher发出一个名为addNewItem的Action。
2、Action
每个Action都是一个对象,都包含两部分:payload(数据)和 type(类型),type 是一个字符串常量,用来标识动作。
譬如:这里的type为ADD_NEW_ITEM
传递的数据为:text
3、Dispatch
Dispatcher 的作用是将 Action 派发到 Store、。你可以把它看作一个路由器,负责在 View 和 Store 之间,建立 Action 的正确传递路线。
注意,Dispatcher 只能有一个,而且是全局的。
AppDispatcher.register()方法用来登记各种Action的回调函数。
譬如这里注册的:
记住,Dispatcher 只用来派发 Action,不应该有其他逻辑。
4、store
Store 保存整个应用的状态。它的角色有点像 MVC 架构之中的Model 。
ListStore继承了EventEmitter.prototype,因此就能使用ListStore.on()和ListStore.emit(),来监听和触发事件了。
Store 更新后(this.addNewItemHandler())发出事件(this.emitChange()),表明状态已经改变。 View 监听到这个事件,就可以查询新的状态,更新页面了。
总结一句:
Store做的事情就是修改数据,发出change事件给View。
我们可以在Store声明任何的事件,只需要emit和on 监听和触发成对定义即可,不一定是change。
在View中,监听到Store 发出 change 事件,就会调用 this._onChange 更新组件状态,从而触发重新渲染。
总结:
1、在一个简单的RN项目中,还是没有必要引入Flux框架,毕竟增加了项目的复杂度。
2、flux框架符合MVC模式,他的数据流转实际上使用消息机制来实现,譬如:EventEmitter里的emit 和on
参考:http://www.ruanyifeng.com/blog/2016/01/flux.html
0 0
- 《React-Native系列》22、 Flux框架Demo详解
- 《React-Native系列》22、 Flux框架Demo详解
- react-native使用flux
- React Native + Flux
- 《React-Native系列》24、 结合Demo学习Redux框架
- 《React-Native系列》24、 结合Demo学习Redux框架
- 《React-Native系列》20、 RN数据流之Flux概览
- 《React-Native系列》20、 RN数据流之Flux概览
- react-native-router-flux 使用详解(一)
- react-native-router-flux(一)
- React Native之 Flux架构
- ReactNative React-native-router-flux框架---刷新当前页面的属性
- ReactNative React-native-router-flux框架---页面跳转与传值
- React Native系列之flexbox布局详解
- react native Touchable 系列组件使用详解
- React with TypeScript 系列(五) --Flux
- React Native官方DEMO
- react native demo创建
- JAVA设计模式之状态模式
- 简述ssh整合
- 《React-Native系列》23、 js实现下拉刷新效果(Android和iOS通用)
- java 虚拟机
- 设计模式——单例模式(Singleton Pattern)
- 《React-Native系列》22、 Flux框架Demo详解
- Spark的几个基本概念:Driver和Job,Stage
- 学DOM时的一点体会
- 安装jdk步骤
- 《React-Native系列》24、 结合Demo学习Redux框架
- javascript js 输入框不能输入
- OpenCV 输入输出XML和YAML文件
- Python读取word文档——python-docx
- Servlet之重定向、配置访问路径、处理多个请求、生命周期、config和context、层次结构、线程安全问题