Redux API

​ Redux的API非常少。Redux定义了一系列的约定(contract),同时提供少量辅助函数来把这些约定整合到一起。

​ Redux只关心如何管理state。在实际的项目中,还需要使用UI绑定库如react-redux

顶级暴露的方法:

Store API

ES6引入:

import { createStore } from 'redux';

createStore

createStore(reducer, [preloadedState], enchancer)

​ 创建一个Redux store来存放应用中所有的state。应用中有且只有一个store。

参数

1、reducer(Function):接收两个参数,分别是当前的state树和要处理的action,返回新的state树。

2、[preloadedState](any):初始state。

3、enhancer(Function):Store enhancer是一个组合store creator的高阶函数,返回一个新的强化过的store creator。

返回值

store:保存了应用所有state的对象。改变state的唯一方法是dispatch action。也可以subscribe 监听state的变化来更新UI。

Store

​ Store就是用来维持应用所有的state树的一个对象。改变store内state的唯一途径是对它dispatch一个action。

​ Store不是类,只是有几个方法的对象。创建store只需要把根部的reducing函数传递给createStore

Store方法


getState()

​ 返回当前的state树。它与store的最后一个reducer返回值相同。

​ **返回值 ** (any):应用当前的state树。


dispatch(action)

​ 分发action,这是触发state改变的唯一途径。会使用当前getState()的结果和传入的action以同步方式的调用store的reduce函数。返回值会被作为下一个state。从现在开始,这就成为了getState()的返回值,同时变化监听器(change listener)会被触发。

参数

​ 1、action(Object):描述应用变化的普通对象。

返回值

​ (Object):要dispatch的action。


subscribe(listener)

​ 添加一个变化监听器。每当dispatch action的时候就会执行。state树的一部分可能已经改变,可以使用getState()获取当前的state。

参数

​ 1、listener(Function):每当dispatch action的时候都会执行的回调。

返回值

​ (Function):一个可以解绑变化监听器的函数。


replaceReducer(nextReducer)

​ 替换当前用来计算state的reducer。

参数

​ 1、reducer(Function):store会使用的下一个reducer。

combineReducers

combineReducers(reducers)

​ 把一个由多个不同reducer函数作为value的object合并成一个最终的reducer函数,然后就可以对这个reducer调用createStore方法。

​ 合并后的reducer可以调用各个子reducer,并把它们返回的结果合并成为一个state对象。combineReducers()返回的state对象,将会传入每个reducer返回的state按其传递给combineReducers()时对应的key进行命名

参数

​ 1、reducers(Object):一个对象,它的value对应不同的reducer函数,这些函数后面会被合并成一个。

返回值

​ (Function):一个调用reducers对象里所有reducer的reducer,并且构造一个与reducers对象结构相同的state对象。

applyMiddleware

applyMiddleware(...middleware)

​ 使用包含自定义功能的middleware来扩展Redux是一种推荐的方式。Middleware可以让你包装store的dispatch方法来达到你想要的目的。

参数

​ 1、...middleware(arguement):遵循Redux middleware API的函数。

返回值

​ (Function):一个应用了middleware后的store enhancer。这个store enhancer的签名是createStore => createStore,最简单的使用方法就是直接作为最后一个enhancer参数传给createStore()函数。

bindActionCreators

bindActionCreators(actionCreators, dispatch)

​ 把一个value为不同action creator的对象,转成拥有同名key的对象。同时使用dispatch对每个action creator进行包装,以便可以直接调用它们。

参数

​ 1、actionCreator(Function or Object):一个action creator,或者一个value是action creator的对象。

​ 2、dispatch(Function):一个由Store提供的dispatch函数。

返回值

​ (Function or Object):一个与原对象类似的对象,只不过这个对象的value都是会直接dispatch原action creator返回的结果的函数。如果传入一个单独的函数作为actionCreators,那么返回的结果也是一个单独的函数。

compose

compose(...functions)

​ 从左到右来组合多个函数。

参数

​ 1、(arguement):需要合成的多个函数。

返回值

​ (Function):从左到右把接收到的函数组合成的最终的函数。

React-Redux API

安装

​ Redux和React之间没有关系,Redux支持React,需要安装react-redux。

npm install --save react-redux

API

<Provider store>

<Provider store>使组件层级中的connect()方法都能获得Redux store。正常情况下,根组件应该嵌套在<Provider store>中才能使用connect()方法。

属性

  • store(Redux Store):应用程序中唯一的Redux store对象。
  • children(ReactElement):组件层级的根组件。

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

​ 连接React组件和Redux Store。连接操作不会改变原来的组件类。反而返回一个新的已与Redux Store连接的组件类。

参数

  • [ mapStateToProps(state, [ownProps]): stateProps ](Function):如果定义该参数,组件将会监听Redux Store的变化。
  • [ mapDispatchRoProps(dispatch, [ownProps]: dispatchProps) ](Object or Function):如果传递的是一个对象,那么每个定义在该对象的函数都会被当做Redux action creator,对象所定义的方法名将作为属性名;每个方法将返回一个新的函数,函数中的dispatch方法会将action creator的返回值作为参数执行。这些属性会被合并到组件的props中。
  • [ mergeProps(stateProps, dispatchProps, ownProps): props ](Function):如果指定了这个参数,mapStateToProps()mapDispatchToProps()的执行结果和组件自身的props将传入到这个回调函数中。该回调函数返回的对象将作为props传递到被包装的组件中。
  • [ options ](Object):如果指定这个参数,可以定制connector的行为。
    • [ pure = ture ](boolean):如果为true,connector将执行shouldComponentUpdate并且浅对比mergeProps的结果,避免不必要的更新。
    • [ withRef = false ](boolean):如果为true,connector会保存一个队被包装组件实例的引用,该引用通过getWrappedInstance()方法获得。

返回值

​ 根据配置信息,返回一个注入了state和action creator的React组件。

静态属性

WrappedComponent(component):传递到connect()函数的原始组件类。

静态方法

getWrappedComponent(): ReactComponent

仅当connect()函数的第四个参数options设置了{ withRef: true }才返回被包装的组件实例。

Redux API的更多相关文章

  1. Redux API之applyMiddleware

    applyMiddleware(...middlewares) 使用包含自定义功能的 middleware 来扩展 Redux 是一种推荐的方式.Middleware 可以让你包装 store 的di ...

  2. Redux API之Store

    Store Store 就是用来维持应用所有的 state 树 的一个对象. 改变 store 内 state 的惟一途径是对它 dispatch 一个action. Store 不是类.它只是有几个 ...

  3. React深入 - 手写redux api

    简介: 手写实现redux基础api createStore( )和store相关方法 api回顾: createStore(reducer, [preloadedState], enhancer) ...

  4. Redux API之bindActionCreators

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

  5. Redux API之compose

    compose(...functions) 从右到左来组合多个函数. 这是函数式编程中的方法,为了方便,被放到了 Redux 里. 当需要把多个 store 增强器 依次执行的时候,需要用到它. 参数 ...

  6. Redux API之combineReducers

    combineReducers(reducers) 随着应用变得复杂,需要对 reducer 函数 进行拆分,拆分后的每一块独立负责管理 state 的一部分. combineReducers 辅助函 ...

  7. Redux API之creatStore

    createStore(reducer, [initialState]) 创建一个 Redux store 来以存放应用中所有的 state.应用中应有且仅有一个 store. 参数 reducer  ...

  8. Redux基础

    Redux 是一个状态容器 Redux 就像是作者自己的介绍,它不会为你提供任何的东西,它不会告诉你如何做路由,它只专注于应用程序状态,是一个 JavasSript 的状态容器,所有的状态的变化都是当 ...

  9. React+Redux学习笔记:React+Redux简易开发步骤

    前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...

随机推荐

  1. 大数据学习笔记——HBase使用bulkload导入数据

    HBase使用bulkload批量导入数据 HBase可使用put命令向一张已经建好了的表中插入数据,然而,当遇到数据量非常大的情况,一条一条的进行插入效率将会大大降低,因此本篇博客将会整理提高批量导 ...

  2. vs2017 C# ActiveX浏览器插件 创建 发布 C# windows窗体控件库(.NET Framework)注意事项

    vs2017需要安装插 插件下载地址:https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.Micro ...

  3. 华为2019年NE40E-X8,承诺命令

    commit每敲一行命令,都得确认一下.以防误操作.

  4. 28.分类算法---KNN

    1.工作原理: 存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系.输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特 ...

  5. C++ explicit关键字,修饰构造函数,ctor

    #include <iostream> // operator Type() 类型操作符重载 // operator int() // operator double() // ... / ...

  6. Python Poetry 学习和使用

    Poetry是啥? 是一个Python虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布.可以用来管理python库和python程序. 安装Poetry curl -sSL https ...

  7. (绿色)修正版gooflow流程解决方案(源码分享+在线演示+UI地址下载)

    gooflow出现挖矿机木马,请勿随意去其他网站下载!!! 一.功能简介 gooflow功能清单1.自定义流程绘制2.自定义属性添加3.支持3种步骤类型普通审批步骤自动决策步骤手动决策步骤 4.决策方 ...

  8. Java连载58-静态内部类、成员内部类详解

    一.内部类的分类: (1)静态内部类(2)成员内部类(3)局部内部类(4)匿名内部类 二.静态内部类 1.静态内部类可以等同的看做是静态变量 内部类的重要作用:可以访问外部类中的私有数据 2.静态内部 ...

  9. angularjs link compile与controller的区别详解,了解angular生命周期

     壹 ❀ 引 我在 angularjs 一篇文章看懂自定义指令directive 一文中简单提及了自定义指令中的link链接函数与compile编译函数,并说到两者具有互斥特性,即同时存在link与c ...

  10. @Transactional注解失效

    一.特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1.service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务 ...