三大原则
- 单一数据源
- state 是不可变值,是只读的
- 使用纯函数来执行修改
redux 中间件原理
正常的逻辑:button ( callback ) => dispatch ( action ) => reducer => state => view
加上中间件:是在 dispatch 上操作
redux 中间件 logger 的实现
let next = store.dispatch
store.dispatch = function dispatchAndLog() {
console.log("dispatching",action)
next(action)
console.log("next state", store.getState())
}
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