在 http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_three_react-redux.html

没有介绍这个,react-redux,需要自动加入actions

connect

connect 会把State和dispatch转换成props传递给子组件。它看起来是下面这样的:

import * as actionCreators from './actionCreators'
import { bindActionCreators } from 'redux' function mapStateToProps(state) {
return { todos: state.todos }
} function mapDispatchToProps(dispatch) {
return { actions: bindActionCreators(actionCreators, dispatch) }
} export default connect(mapStateToProps, mapDispatchToProps)(Component)

它会让我们传递一些参数:mapStateToProps,mapDispatchToProps,mergeProps(可不填)和React组件。

之后这个方法会进行一系列的黑魔法,把state,dispatch转换成props传到React组件上,返回给我们使用。

mapStateToProps:

mapStateToProps 是一个普通的函数。

当它被connect调用的时候会为它传递一个参数State。

mapStateToProps需要负责的事情就是 返回需要传递给子组件的State,返回需要传递给子组件的State,返回需要传递给子组件的State,(重要的事情说三遍。。。。)然后connect会拿到返回的数据写入到react组件中,然后组件中就可以通过props读取数据啦~~~~

它看起来是这样的:

function mapStateToProps(state) {
return { list: state.list }
}

因为stat是全局State,里面包含整个项目的所有State,但是我不需要拿到所有State,我只拿到我需要的那部分State即可,所以需要返回 state.list 传递给组件

mapDispatchToProps:

与mapStateToProps很像,mapDispatchToProps也是一个普通的函数。

当它被connect调用的时候会为它传递一个参数dispatch。

mapDispatchToProps负责返回一个 dispatchProps

dispatchProps 是actionCreator的key和dispatch(action)的组合。

dispatchProps 看起来长这样:

{
addItem: (text) => dispatch(action)
}

connect 收到这样的数据后,会把它放到React组件上。然后子组件就可以通过props拿到addItem并且使用啦。

this.props.addItem('Hello World~');

如果觉得复杂,不好理解,,那我用大白话描述一下

就是通过mapDispatchToProps这个方法,把actionCreator变成方法赋值到props,每当调用这个方法,就会更新State。。。。额,,这么说应该好理解了。。

bindActionCreators:

但如果我有很多个Action,总不能手动一个一个加。Redux提供了一个方法叫 bindActionCreators 。

bindActionCreators 的作用就是将 Actions 和 dispatch 组合起来生成mapDispatchToProps 需要生成的内容。

它看起来像这样:

let actions = {
addItem: (text) => {
type: types.ADD_ITEM,
text
}
} bindActionCreators(actions, dispatch); // @return {addItem: (text) => dispatch({ type: types.ADD_ITEM, text })}

bindActionCreators的更多相关文章

  1. Redux源码分析之bindActionCreators

    Redux源码分析之基本概念 Redux源码分析之createStore Redux源码分析之bindActionCreators Redux源码分析之combineReducers Redux源码分 ...

  2. redux的bindActionCreators

    bindActionCreators是redux的一个API,作用是将单个或多个ActionCreator转化为dispatch(action)的函数集合形式. 开发者不用再手动dispatch(ac ...

  3. Redux API之bindActionCreators

    bindActionCreators(actionCreators,dispatch) 把 action creators 转成拥有同名 keys 的对象,但使用 dispatch 把每个 actio ...

  4. bindActionCreators作用

    个人总结: 讲一下bindActionCreators这个API, bindActionCreators是要结合mapDispatchToProps来使用的. mapDispatchToProps函数 ...

  5. 基于React,Redux以及wilddog的聊天室简单实现

    本文主要是使用ReactJs和Redux来实现一个聊天功能的页面,页面极其简单.使用React时间不长,还是个noob,有不对之处欢迎大家吐槽指正. 还要指出这里没有使用到websocket等技术来实 ...

  6. react-redux原理分析

    写在前面 之前写了一篇分析Redux中Store实现的文章(详见:Redux原理(一):Store实现分析),突然意识到,其实React与Redux并没有什么直接的联系.Redux作为一个通用模块,主 ...

  7. Redux原理(一):Store实现分析

    写在前面 写React也有段时间了,一直也是用Redux管理数据流,最近正好有时间分析下源码,一方面希望对Redux有一些理论上的认识:另一方面也学习下框架编程的思维方式. Redux如何管理stat ...

  8. 史上最全的 Redux 源码分析

    前言 用 React + Redux 已经一段时间了,记得刚开始用Redux 的时候感觉非常绕,总搞不起里面的关系,如果大家用一段时间Redux又看了它的源码话,对你的理解会有很大的帮助.看完后,在回 ...

  9. react+redux教程(一)connect、applyMiddleware、thunk、webpackHotMiddleware

    今天,我们通过解读官方示例代码(counter)的方式来学习react+redux. 例子 这个例子是官方的例子,计数器程序.前两个按钮是加减,第三个是如果当前数字是奇数则加一,第四个按钮是异步加一( ...

随机推荐

  1. MySQL基础原创笔记

    对表的增删改操作: 创建表: create table student (          id  int  primary key  auto_increment,          name   ...

  2. makefile函数

    http://www.cnblogs.com/tianyajuanke/archive/2013/02/16/2610276.html 通用步骤: 编译时,可以不知钉头文件,如果指定头文件,其作用是当 ...

  3. mfc 控件字体设置

    将以下代码加入至 OnInitDialog() 中 // TODO: Add extra initialization here CFont * m_font= new CFont; m_font-& ...

  4. flash flex 程序出现错误 Error #2032

    解决思路参考: http://www.cnblogs.com/enjoyprogram/archive/2012/06/21/2557615.html 有可能是这种情况: 状况:在安装flshbuil ...

  5. 无索引状态下比较DataTable的几种过滤方法效率

    先构造一个DataTable: public DataTable GetDataTable() { DataTable dtTmp = new DataTable(); dtTmp.Columns.A ...

  6. golang

    Golang, 以17个简短代码片段,切底弄懂 channel 基础 (原创出处为本博客:http://www.cnblogs.com/linguanh/) http://www.cnblogs.co ...

  7. Java 技术文章摘录

    sokcet 编程实例 android bundle类 Android -- Looper.prepare()和Looper.loop() —深入版 Java NIO系列教程 XML操作 Androi ...

  8. mac 下配置 VS Code 开发 Golang

    对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: 代码着彩 ...

  9. 前端模板之EasyUI常用控件及参数

    CSS类定义 div easyui-window window窗口样式 属性如下: 1) modal:是否生成模态窗口.true[是] false[否] 2) shadow:是否显示窗口阴影.true ...

  10. 数据结构与算法(1)支线任务3——Largest Rectangle in Histogram

    题目如下:(https://leetcode.com/problems/largest-rectangle-in-histogram/) Given n non-negative integers r ...