7. redux
1、所有的状态统一放在state中,由store来管理state
2、用户触发一个action行为,由dispatch分发action行为
3、通过store把原有的state的状态值和dispatch分发的action行为一起传给reducer
4、Reducer的作用是返回一个新的state去更新原有的store中对应的state
5、Store接收到新的state然后重新渲染Component
6、每一次store中的state发生变化,通过subscribe这个方法进行监听的,只要是store中的状态发生变化了,那么就会触发这个方法从而实现组件的更新
action:
Action本质就是一个对象,它有一个type属性,type属性是用来判断用户触发的是哪一个行为(是汉译英还是英译汉,就是使用的type来进行判断的),再实际使用的时候并不是直接用的action,而是使用action创建的一个函数,这个函数返回的是一个action
Function add(){ --------------------->add这个action行为对象
Return {type:’add’}
}
Reducer:
Reducer就是一个纯函数,回接收两个参数,第一个参数是需要管理的状态state,第二个参数是action
Reducer回根据传入的action中的type值对state进行不同的操作,从而返回一个新的state,不是再原有的state上进行修改的,如果遇到未知的action的type值,不会对原有的state进行任何修改,返回的是原有的state值
Function reducer(state,action){
Switch(action.type){}
}
Store:
包含整个redux应用的所有状态,需要使用createStore方法生成一个新的store
Store提供的三个方法:
Store.getState()用来获取state值得
Store.dispatch() 用来改变状态得
Store.subscribe() 用来监听state变化得,每当state变化就会调用这个方法
简单小实例//
import React from 'react'
import ReactDom from 'react-dom' ;
import {createStore} from "redux"
class HelloB extends React.Component{
constructor(props){
super(props);
this.state={
msga:"你好,世界"
}
store.subscribe(()=>{
this.setState({
msga:store.getState().msg
})
})
} changeLanguage=()=>{
store.dispatch(actions.sendEnglish())
} render(){
return(
<div>
<h1>{this.state.msga}</h1>
<button onClick={this.changeLanguage}>翻译</button>
</div>
)
} } const actions={
sendChinese:()=>({type:"chinese"}),
sendEnglish:()=>({type:"english"})
} const reducer=(state={},actions)=>{
switch(actions.type){
case "chinese":
return{
state,
msg:"你好,世界"
}
case 'english':
return{
state,
msg:"hellw word"
}
default:
return state
}
} const store=createStore(reducer) //通过接收reducer返回得新的state值生成新的state ReactDom.render( <HelloB/>,
document.getElementById("root")
)
7. redux的更多相关文章
- RxJS + Redux + React = Amazing!(译一)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...
- 通过一个demo了解Redux
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- RxJS + Redux + React = Amazing!(译二)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...
- redux学习
redux学习: 1.应用只有一个store,用于保存整个应用的所有的状态数据信息,即state,一个state对应一个页面的所需信息 注意:他只负责保存state,接收action, 从store. ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- Redux初见
说到redux可能我们都先知道了react,但我发现,关于react相关的学习资料很多,也有各种各样的种类,但是关于redux简单易懂的资料却比较少. 这里记录一下自己的学习理解,希望可以简洁易懂,入 ...
- react+redux教程(八)连接数据库的redux程序
前面所有的教程都是解读官方的示例代码,是时候我们自己写个连接数据库的redux程序了! 例子 这个例子代码,是我自己写的程序,一个非常简单的todo,但是包含了redux插件的用法,中间件的用法,连接 ...
- react+redux教程(七)自定义redux中间件
今天,我们要讲解的是自定义redux中间件这个知识点.本节内容非常抽象,特别是中间件的定义原理,那多层的函数嵌套和串联,需要极强逻辑思维能力才能完全消化吸收.不过我会多罗嗦几句,所以不用担心. 例子 ...
- react+redux教程(六)redux服务端渲染流程
今天,我们要讲解的是react+redux服务端渲染.个人认为,react击败angular的真正“杀手锏”就是服务端渲染.我们为什么要实现服务端渲染,主要是为了SEO. 例子 例子仍然是官方的计数器 ...
- react+redux教程(五)异步、单一state树结构、componentWillReceiveProps
今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...
随机推荐
- vs2015 cppunit配置及使用
目录 第一步 第二步 第三步 编译生成lib库 使用 calculator类测试 代码部分 第一步 下载源代码 http://sourceforge.net/projects/cppunit/file ...
- HTML新特性--canvas绘图-文本
一.html5新特性--canvas绘图-文本(重点) #常用方法与属性 -ctx.strokeText(str,x,y); 绘制描边文字(空心) str:绘制文本 x,y:字符串左上角位置(以文 ...
- 02 初级版web框架
02 初级版web框架 服务器server端python程序(初级版): import socket server=socket.socket() server.bind(("127.0.0 ...
- Django认证系统之自带auth_user表操作
Django自带auth_user表操作: views.py from django.contrib import auth#引入auth模块 from django.contrib.auth.m ...
- Vue刷新页面的三种方式
我们在写项目的时候,经常会遇到,用户执行完某个动作,改变了某些状态,需要重新刷新页面,以此来重新渲染页面 1.原始方法: location.reload(); 2.vue自带的路由跳转: this.$ ...
- PL/SQL语言语法
一.前言 SQL全称是"结构化查询语言(Structured Query Language)",而PL/SQL是过程语言(Procedure Language),是对SQL的扩展. ...
- redis学习——day02_redis数据类型
一.简介 Redis不仅仅是简单的key-value 存储器,同时也是一种data structures server.传统的key-value是指支持使用一个key字符串来索引value字符串的存储 ...
- E. Alternating Tree 树点分治|树形DP
题意:给你一颗树,然后这颗树有n*n条路径,a->b和b->a算是一条,然后路径的权值是 vi*(-1)^(i+1) 注意是点有权值. 从上头往下考虑是点分治,从下向上考虑就是树形DP, ...
- 华为五大专家亲述:如何转型搞 AI?
导语:非AI专业技术人员转型AI技术,或是作为一名学生学习AI技术开发,对每个有这样诉求和经历的人来说,都希望能够看到AI技术人才的成长经历,给出自己的真实经历分享. 前言 参考塞缪尔.约翰逊(18世 ...
- [工具推荐]001.FlipPDF使用教程
FlipPDF是一个什么样的软件呢,他有什么实际用途呢?顾名思义,这是一个跟PDF有关的软件,没错它是一款把PDF转换成酷炫书籍的软件,他还支持PDF中的目录,也就是转换成的书籍,目录一样可以跳转的. ...