该文章不介绍Redux基础,也不解释各种乱乱的概念,网上一搜一大堆。只讲使用Redux开发一个功能的步骤,希望可以类我的小白们,拜托它众多概念的毒害,大牛请绕道!
本文实例源代码参考:React-Redux-Primary-Demo 中的webapp/redux/index.js、webapp/redux/reducers/index.js、webapp/redux/components/Counter.js(为了讲解方面,本文示例代码所有改动,但大致相同)。
演示地址:Redux实例演示
1.创建主文件js,比如index.js
2.定义render入口并调用Counter
const render = () => ReactDOM.render(
<Counter showtxt={} clickHandle={}/>,$('#wrapper')[0]
)
3.定义Counter,也就是React Component,生成DOM结构,render时触发。
class Counter extends Component {
render() {
return <div onClick={this.props.clickHandle}>我是Counter的div。{this.props.showtxt}</div>
}
}
export default Counter
4.初始化显示,手动调用render(),第一次初始化时定义,后续不在执行。
render();
至此,就可以吧Counter内容显示到页面上了。接下来我们就来实现clickHandle事件。
重要说明:Redux是通过改变状态state来改变视图view的(他们是一一对应的),但是我们不能像React那样setState,只能通过Reducer生成新的state,而Reducer执行是通过store.dispatch调用的。
基于这一点,我们继续。。。
5.创建store,并绑定reducer
const store = createStore(reducer); // createStore的第一个参数必须是个函数,store.dispatch()时执行,该函数就叫reducer
6.定义Action,调用store.dispatch
<Counter showtxt={store.getState().showtxt} clickHandle={() => {store.dispatch({ type: 'clickdiv' })}}/>,$('#wrapper')[0]) // 修改步骤2的代码
7.定义Reducer,生成新的state
function counter(state = {count: 0,showtxt: ''}, action) {
const count = state.count
switch (action.type) {
case 'clickdiv':
return {
count: count + 1,
showtxt: '你不小心点到了我' + (count + 1) + '次'
}
default:
return state
}
}
说明:这里只修改要state中变化的值,如果state是对象,return的时候需要把其他值带上。
到这里,貌似已经完整了,点击只执行store.dispatch、调用Reducer生成新的state,state又和view绑定自动更新,应该可以了吧?
实际不可以,因为,上面只是生成了新额state,要想跟view绑定,还有最后一步:监听state变化执行render。
8. 定义state变化监听
store.subscribe(render)
至此,redux基本调用流程彻底完成。流程总结如下:
Redux学习笔记:Redux简易开发步骤的更多相关文章
-
React+Redux学习笔记:React+Redux简易开发步骤
前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...
-
Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
-
APPCAN学习笔记003---原生开发与HTML5技术
APPCAN学习笔记003---原生开发与HTML5技术 技术qq交流群:JavaDream:251572072 1.HTML5的优势: HTML5强悍牢固的骨架 CSS3精致到每一个毛孔的皮 ...
-
APPCAN学习笔记001---app高速开发AppCan.cn平台概述
1.APPCAN学习笔记---app高速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...
-
Hadoop学习笔记(4) ——搭建开发环境及编写Hello World
Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...
-
Android(java)学习笔记162:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
-
jsp学习笔记:mvc开发模式
jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...
-
Qlik Sense学习笔记之Mashup开发(二)
date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...
-
Qlik Sense学习笔记之Mashup开发(一)
date: 2018-12-21 12:33:29 updated: 2018-12-21 12:33:29 Qlik Sense学习笔记之Mashup开发(一) 1.基于Qlik Sense API ...
-
React Redux学习笔记
React Router React Router 使用教程 Redux中间件middleware [译]深入浅出Redux中间件 Redux学习之一:何为middleware? ES6 ES6新特性 ...
随机推荐
-
常用ADC滤波处理
#define N 70 XDATA WORD Value_buf[N]; XDATA DWORD ADCValue; static BYTE v_gu8cnt=0; static BYTE i=0; ...
-
MySQL支持的数据类型(3)( 字符串)
字符串类型 字节 描述及存储需求 char(m) m m为0~255之间的整数 varchar(m) m为0~65535之间的整数 tinyblob 允许长度为0~255字节,值的长度+1个字 ...
-
APP开发:对于IOS APP应用的推广渠道有哪些?
亿合科技了解到,随着移动互联网时代的到来,苹果从2007年进入中国市场,一直备受大众喜爱,手机应用也层出不穷.那么对于那么多的IOS APP应用怎么能获得用户的喜爱呢?于是推广APP应用是需要做的,亿 ...
-
mySQL 50个查询系列
http://bubufx.com/detail-1749088.html http://www.jb51.net/article/67932.htm Student(S#,Sname,Sage,Ss ...
-
C#属性和变量的区别学习
参考一 昨天看三层架构 (具体没怎么弄懂) 发现一般有一页代码专门用户存放字段的 而且都用用属性封装..令我诧异的是 很多字段属性都存在 get{}和set{} 和普通的变量没什么区别(可读可写) ...
-
.AndroidRuntimeException: requestFeature() must be called before adding content
有以下几种情况: 1. setContentView(R.layout.activity_list); requestWindowFeature(Window.FEATURE_NO_TITLE); 修 ...
-
解决windows server 2003不认U盘或移动硬盘
解决windows server 2003不认U盘或移动硬盘1.进入命令提示符环境(也就是DOS) 2.进入DISKPART程序 3.输入AUTOMOUNT ENABLE指令 4.OK,下次USB硬盘 ...
-
PTA 07-图5 Saving James Bond - Hard Version (30分)
07-图5 Saving James Bond - Hard Version (30分) This time let us consider the situation in the movie ...
-
【CC2530入门教程-03】CC2530的中断系统及外部中断应用
第3课 CC2530的中断系统及外部中断应用 广东职业技术学院 欧浩源 一.中断相关的基础概念 内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及 ...
-
CSS3_标准盒子模型和怪异盒子模型
#box{ width: 200px; height: 200px; background-color: pink; } 标准盒子模型 box-sizing: content-box; padding ...