Redux内核
- 状态读取 (getState)
- 状态更新(dispatch)
- 订阅监听(subscribe)
为什么设计中间件middleware
Redux的原始设计是只处理同步状态流,但是在真实业务中需要:
- 发起异步请求
- 记录日志、性能分析
- 上报埋点、安全审计、
- 报错捕获
- 权限拦截/重定向跳转
自定义中间件场景推荐
- 打印日志:loggerNiddleware
- 异步请求:redux-thunk/redux-saga
- 权限验证:authMiddleware
- 请求去重:requestCachemiddleware
- 报错捕获上报:errorCaptureMiddleware
- 多语言切换:i18nMiddleware
如何避免所有组件都更新?
Redux是单状态树,状态变动后如果每个组件都订阅store.getState()就全体更新。会发生性能灾难。
所以实现选择性订阅
connect是React与Redux的桥梁