三大原则

  • 单一数据源
  • state 是不可变值,是只读的
  • 使用纯函数来执行修改

redux 中间件原理

正常的逻辑:button ( callback ) => dispatch ( action ) => reducer => state => view
加上中间件:是在 dispatch 上操作

redux 中间件 logger 的实现

  1. let next = store.dispatch
  2. store.dispatch = function dispatchAndLog() {
  3. console.log("dispatching",action)
  4. next(action)
  5. console.log("next state", store.getState())
  6. }

state

单项数据流

  • dispatch(action)
  • reducer -> newState
  • subscribe 触发通知

react-redux

  • connect
  • mapStateToProps,mapDispatchToProps

异步 action

return 一个函数

  • react-thunk
  • react-promise
  • react-saga

中间件

特点

  • predictable,可预测性
    • 纯函数
    • state是不可变值的
  • 可扩展性

缺点

  • 社区扩展太多
  • redux-thunk 和 redux-promise 改变了 action 的含义

saga

  • 文件切换问题
  • saga 创建麻烦
  • entry 创建麻烦


DVA

https://github.com/sorrycc/blog/issues/6
https://dvajs.com/
https://www.yuque.com/flying.ni/the-tower/tvzasn