技术面经三

66 阅读1分钟

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 个步骤:

  1. 调用 store.dispatch(action)
  2. Redux store 调用传入的 reducer 函数
  3. 根 reducer 应该把多个子 reducer 输出合并成一个单一的 state 树
  4. Redux store 保存了根 reducer 返回的完整 state 树

store.subscribe()从 Redux state 树中读取部分数据,并通过 props 来把这些数据提供给要渲染的组件,也是connect的实现原理。

异步数据流

中间件实现