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. C语言编程之道--读书笔记

    C语言语法 const int nListNum =sizeof(aPrimeList)/sizeof(unsigned);//计算素数表里元素的个数 1:#define INM_MAX 32767 ...

  2. BIOS相关

    BIOS设置中恢复默认设置的选项是Load Optimized Defaults, 但是有的电脑是restore,我的就是 有的电脑进入bios需要按住Fn+F2一些操作也需要按Fn,比如说保存并退出 ...

  3. python3.5连接oracle数据及数据查询

    今天心血来潮研究下用python连接oracle数据库,看了一下demo,本以为很简单,从操作到成功还是有点坎坷,这里分享给大家,希望为后面学习的童鞋铺路. 一.首先按照cx_Oracle 二:在py ...

  4. linux中的颜色控制

    \033[031m  xxx  \033[0m  ---------------------->中间的xxx部分显示为红色,不接后面的\033[0m,则以后显示的都是红色,\033表示开始和结束 ...

  5. 《深入理解计算机系统》第7章:重定位PC相对引用的理解

    在第七章<链接>中的静态链接有对符号进行重定位PC相对引用的处理,书上对应的还有公式,但不是很好理解.现做实验对公式进行理解(公式内容如有兴趣可以参考原文)

  6. System V IPC 之共享内存

    IPC 是进程间通信(Interprocess Communication)的缩写,通常指允许用户态进程执行系列操作的一组机制: 通过信号量与其他进程进行同步 向其他进程发送消息或者从其他进程接收消息 ...

  7. 03-第一个脚本程序以及输入输出_Python编程之路

    上节课已经教大家安装了Python的解释器,那么这节课我们就可以正式来写代码了 说明:在下面的代码演示中,我将大部分使用python交互器演示代码的输入输出,注意">>>& ...

  8. C语言程序设计(基础)- 第7周作业(新)

    要求一(25经验值) 完成PTA中题目集名为<usth-C语言基础-第七周作业>和<usth-C语言基础-12周PTA作业>中的所有题目. 注意1:<usth-C语言基础 ...

  9. C语言程序设计(基础)- 第7周作业

    为了防止误解,自从本周开始ppt.pta作业.博客作业的命名均与学校教学周一致. 要求一(20经验值) 完成PTA中题目集名为<usth-C语言基础-第七周作业>和<usth-C语言 ...

  10. Hibernate学习错误集锦-GenericJDBCException: could not execute statement

    初次使用Hibernate,进行junit测试,报如下错误. 原因:Hibernate帮我们管理主键了,我们不需要对主键赋值,并且主键是自增的.所以在数据库中,逐渐选项应当勾选 org.hiberna ...