react-redux学习笔记

为什么要用react-redux?

我们知道 React 的核心思想是 构建组件, 然后各个组件维护自己的状态(state)和UI,当状态变化时,自动重新渲染整个组件。

可以看出 React 实现的是 MVC 中的 V 层,而React对组件间数据流的管理是比较弱的,父子组件之间数据传递还比较简单,子组件可以通过 this.props 访问到父组件的数据/方法,而非父子组件之间的通信一般是通过一个全局事件来进行监听,如果组件非常多的话,这对数据流的管理是非常不方便的。

因此就有人搞了个 redux出来。一开始控制数据流使用的是Flux,后来 Dan Abramov 在 React Europe 2015 上作了一场令人印象深刻的演示 Hot Reloading with Time Travel之后,Redux 迅速成为最受人关注的 Flux 实现之一。。

react-redux有什么东西要学?

Action

  • 用于描述发生了什么

Reducer

  • 根据Action更新state

Store

  • 维持应用的state
  • 提供getState()方法获取state
  • 提供dispatch(action)方法更新state
  • 通过subscribe(listener)注册监听器

一个Redux应用只有一个单一的Store

数据流

  • 严格的单向数据流是Redux架构的设计核心
    • 应用中所有的数据都遵循相同的生命周期(鼓励做数据范式化)

Redux应用中数据的生命周期遵循以下4个步骤:

  • 调用 store.dispatch(action)
  • Redux Store调用传入的reducer函数(参数: state , action)
  • 根reducer把多个子reducer合并成一个单一的state树 ( combineReducer( { } ))
  • Redux store 保存了根 reducer 返回的完整 state 树。

实践 React+Redux

redux和react之间没有关系, redux 支持react、Angular、jQuery,Backbone甚至纯JavaScript)

  1. Redux 通过Action的形式来改变 state (全局)
  2. 容器组件(Smart/Container Components)和展示组件(Dumb/Presentational Components)
容器组件 展示组件
Location 最顶层,路由处理 中间和子组件
Aware of Redux
读取数据 从 Redux 获取 state 从 props 获取数据
修改数据 向 Redux 派发 actions 从 props 调用回调函数

Redux 的 React 绑定库包含了 容器组件和展示组件相分离 的开发思想。
明智的做法是只在最顶层组件(如路由操作)里使用 Redux。其余内部组件仅仅是展示性的,所有数据都通过 props 传入。

未完待续````

文章目录
  1. 1. 为什么要用react-redux?
  2. 2. react-redux有什么东西要学?
    1. 2.1. Action
    2. 2.2. Reducer
    3. 2.3. Store
  3. 3. 数据流
  4. 4. Redux应用中数据的生命周期遵循以下4个步骤:
  5. 5. 实践 React+Redux