Redux
简介
redux是一个装填管理工具,由flux的单向数据流演化而来;其遵循三个原则,单一数据源、状态只读、状态修改均由纯函数完成
单一数据源
单一数据源的好处在于整个应用的状态都保存在一个对象中,这样我们可以随时可以提取出整个应用的状态进行持久化,也为服务端渲染提供了可能
状态知识可读的
redux不支持定义store,redux中需要定义一个reducer,reducer根据当前触发的action对当前的状态进行迭代
状态变化由纯函数完成
纯函数的设计使得reducer对状态的修改变得简单、纯粹、可测试和支持时间旅行的调试方式
更新流程(发布-订阅)
- 用户在页面上进行某些操作,通过 dispatch 发送一个 action。
- Redux 接收到这个 action 后通过 reducer 函数获取到下一个状态。
- 将新状态更新进 store,store 更新后通知页面进行重新渲染。
中间件
由于redux是纯函数,无法去处理一些副作用如请求和缓存等,所以这些副作操作需要交给中间件来完成
常用中间件
- redux-thunk 支持返回一个函数,在函数内进行异步操作
- redux-saga 将异步请求封装至saga中
- redux-promise 支持在payload中返回一个promise
- redux-action 简化reducer和actions的编写