React ----Redux源码解析

33 阅读1分钟

Redux内核

  • 状态读取 (getState)
  • 状态更新(dispatch)
  • 订阅监听(subscribe)

为什么设计中间件middleware

Redux的原始设计是只处理同步状态流,但是在真实业务中需要:

  • 发起异步请求
  • 记录日志、性能分析
  • 上报埋点、安全审计、
  • 报错捕获
  • 权限拦截/重定向跳转

自定义中间件场景推荐

  • 打印日志:loggerNiddleware
  • 异步请求:redux-thunk/redux-saga
  • 权限验证:authMiddleware
  • 请求去重:requestCachemiddleware
  • 报错捕获上报:errorCaptureMiddleware
  • 多语言切换:i18nMiddleware

如何避免所有组件都更新?

Redux是单状态树,状态变动后如果每个组件都订阅store.getState()就全体更新。会发生性能灾难。

所以实现选择性订阅

connect是React与Redux的桥梁