redux
Action是把数据从应用传到 store 的有效载荷。它是 store 数据的唯一来源。
Reducers 指定了应用状态的变化如何响应 actions并发送到 store 的,描述应用如何更新 state。
随着应用变得越来越复杂,可以考虑将 reducer 函数拆分成多个单独的函数,拆分后的每个函数负责独立管理state的一部分。而后可用
combineReducers把一个由多个不同 reducer 函数作为 value 的 object,合并成一个最终的 reducer 函数,然后就可以对这个 reducer调用createStore方法。合并后的 reducer 可以调用各个子 reducer,并把它们返回的结果合并成一个state对象。由combineReducers()返回state 对象,会将传入的每reducer返回的state按其传递给combineReducers()时对应的 key 进行命名。
Store就是把它们联系到一起的对象。通过createStore()创建而成。Store 有以下职责:
- 维持应用的 state;
- 提供
getState()方法获取 state; - 提供
dispatch(action)方法更新 state; - 通过
subscribe(listener)注册监听器; - 通过
subscribe(listener)返回的函数注销监听器。
redux数据流
严格的单向数据流是 Redux 架构的设计核心。
Redux 应用中数据的生命周期遵循下面 4 个步骤:
- 调用
store.dispatch(action) - Redux store 调用传入的 reducer 函数
- 根 reducer 应该把多个子 reducer 输出合并成一个单一的 state 树
- Redux store 保存了根 reducer 返回的完整 state 树
store.subscribe()从 Redux state 树中读取部分数据,并通过 props 来把这些数据提供给要渲染的组件,也是connect的实现原理。
异步数据流
中间件实现