1.redux是react的状态管理工具,可以用来存放公共数据,因此也可用来作为组件间参数传递的方法。
 
2.组件传参,需要有一个公共的父组件。在父组件中引入Provider。通过Provider将store传递到子组件中,这样子组件就可以使用store中的数据。
        在render函数中,将返回的HTML面板用 <Provider store={ store } ></Provider>包裹起来,这样就可以实现传递
            main.js
 import child1 ....      //引入组件
import child2 ....      //引入组件 import {Provider} from 'react-redux'
....
render(){
return (
<Provider store = {store}>    //添加Provider标签
<div>
<child1>111</child1>
<child2>222</child2>
</div>
</Provider>
)
}
....
 
3. 创建redux所需要的基本的四个文件:Actions.js   ActionTypes.js   Store.js   Reducer.js
 
 Actions.js            //定义Action函数,当有数据改变时,就产生了一个action,携带着新的payload和之前的type

 var actionFunc = function(action){
return {
type:action.type,
payload:action.payload
}
}
export default actionFunc ActionTypes.js //定义action的类型,根据类型返回不同的state export const ACTTYPE1 = 'add1'
export const ACTTYPE2 = 'add2' Store.js //用来初始化state数据(默认空),并将reducer和state绑定到store上 import {createstore} from 'redux'
import reducer from './Reducer.js'
var state = {
type:'',
payload:''
}
var store = createstore(reducer,state)
export default store Reducer.js //通过action返回不同的数据, import * as actionTypes from './ActionTypes.js'
export default {(state,action)=>{
switch (action.type) {
case actionTypes.ACTTYPE1 :
return {...state, payload : action.payload} //将state展开,然后再添加一个payload属性,用来覆盖之前的payload属性
case actionTypes.ACTTYPE2 :
return {...state, payload : action.payload}
default :
{...state}
}
}}
  
4.在需要改变 state 数据的组件上,引入 connect 并定义两个函数,并将定义的 Action 和 ActionTypes 引入
            1.定义 mapStateToProps 和 mapDispatchToProps 两个函数。前一个是用来将 state 映射到this.props上的(就是映射到该组件上),后一个是将dispatch映射到组件上的。
            2.引入 Action 和 ActionTypes 是为了调用Action函数,而Action函数创建了一个Action,调用Action函数的时候会传值,传的值就是action的值。   然后通过action修改state的数据
            3.使用connect链接两个函数和组件,并暴露
                    export default connect( mapStateToProps , mapDispatchToProps )(Zujian)
            4.mapStateToProps 
 const mapStateToProps  =  function(state , ownProps){
return {
text : state.text //将state中定义的数据(text)返回到props上。这样在类中就能通过this.props.text访问到state中的数据
}
}
const mapDispatchToProps = function(dispatch , ownProps){
return {
funcname : (text)=>{ //返回一个方法到props上,这样就可以通过this.props.funcname( 'tt' )调用这个方法,并调用dispatch
dispatch( Action.action1( { type : action1type , payload : 'sunny' } ) ) //调用dispatch 创建一个action,并修改state
}
}
}
 
5.在需要显示store中的数据的组件上也要定义 mapStateToProps 和 mapDispatchToProps 两个函数,并用connect链接。mapDispatchToProps 中的返回内容可以为空对象。

redux的使用过程的更多相关文章

  1. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps

    今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...

  2. redux源码解读

    react在做大型项目的时候,前端的数据一般会越来越复杂,状态的变化难以跟踪.无法预测,而redux可以很好的结合react使用,保证数据的单向流动,可以很好的管理整个项目的状态,但是具体来说,下面是 ...

  3. 一个Time TodoList实例了解redux在wepy中的使用

    @subject: wepy-redux-time-todo @author: leinov @date:2018-10-30 @notice: 小程序(wepy)开发群110647537 欢迎加入 ...

  4. redux原理

    Redux实现原理 不同组件需要依赖同一个数据的时候,就需要状态提升至这些组件的根组件. redux是状态统一管理工具,需要使用它的原因是: 组件之间通信统一管理,方便代码维护. React中有一个特 ...

  5. React-Native 动画优化

    前言 动画对于客户端来说是非常重要的一部分,直接影响到应用的用户体验.前端对于动画优化通常使用CSS3样式来实现动画,以利用GPU加速特性.而React-Native由于渲染模式的不同,无法使用CSS ...

  6. vue和react

    1. 数据渲染 vue是使用template模板进行渲染,react使用的是jsx语法,对组件进行渲染 vue模板中使用{{ this.data }} 双括号包着变量,代表变量表示的值.外面那层表示需 ...

  7. c++ primer plus 第6版 部分二 5- 8章

    ---恢复内容开始--- c++ primer plus 第6版 部分二    5-  章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...

  8. Redux 实现过程的推演

    这是一篇浅入浅出的 Redux 实现过程的推演笔记!正常来说应该是要从源码下手开始解析,这里是逆向推演,假如有需求是要这么一个东西,那么该如何从零开始实现? 通过该笔记,更多的是希望自己能够多熟悉从无 ...

  9. redux使用过程中遇到的两个致命的关键点

    一.在reducer中,返回的state必须是全新的对象,否则,redux不会执行listening方法,因为redux会认为state没有更新过,没必要重新渲染view. 出现问题的例子: cons ...

随机推荐

  1. lvm创建卷组和格式化

    * 前提条件:/dev/sdb为一块空的硬盘 * 创建物理卷:pvcreate /dev/sdb * 创建卷组:vgcreate vol_name /dev/sdb (vol_name 为卷组名字) ...

  2. u-boot的SPL源码流程分析

    上次梳理了一下SPL的基本概念和代码总体思路,这次就针对代码跑的流程做个梳理.SPL中,入口在u-boot-spl.lds中 ENTRY(_start) SECTIONS { .text : { __ ...

  3. 20165230 2017-2018-2 《Java程序设计》第3周学习总结

    20165230 2017-2018-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周主要学习了类与对象. 包括创建对象与构造方法. 了解了程序是由若干个类所构成:类分为类名 ...

  4. 第一把机械键盘 ikbc C-87

    终于入了机械键盘,ikbc C-87黑色红轴. 原本上周五晚上就到了,但是那个键盘有几个键弹起后弹簧会持续响,敲了一会,实在不能忍受,就申请换货了.新换的键盘今天终于到了,没有了之前的问题,但是几乎每 ...

  5. Java安装和环境变量配置

    一.Java的安装 1.下载合适的版本,安装jdk和jre到同一路径下的同一文件夹下,例如:都安装在 E:\Java: 备注:  JDK:Java Development Kit :  JRE: Ja ...

  6. javascript中函数的闭包自调用

    话不多说, 直接上代码 // 定义一个变量outerParam, 然后使用一个闭包函数给该变量初始化var outerParam = (function testClosure(param) { // ...

  7. 通向架构师的道路之 Tomcat 性能调优

    一.总结前一天的学习 从"第三天"的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: 吞吐量 Responsetime Cpuload MemoryUsage 我们也 ...

  8. SpringAOP-JDK 动态代理和 CGLIB 代理

    在 Spring 中 AOP 代理使用 JDK 动态代理和 CGLIB 代理来实现,默认如果目标对象是接口,则使用 JDK 动态代理,否则使用 CGLIB 来生成代理类. 1.JDK 动态代理 那么接 ...

  9. 移动端Web资源整合

    meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...

  10. Django+xadmin打造在线教育平台(十)

    十四.xadmin的进阶开发 14.1.权限管理 (1)用户权限 超级用户拥有所有权限,其它添加的用户默认没有任何权限 进后台添加一个用户“Editor1”,勾上“职员状态”后,这个用户才可以登录进后 ...