(就是下面要提到的redux-thunk、redux-promise) ? redux-promise:基于Promise的异步处理; redux-promise-middleware:还是Promise; redux-saga:最优雅!最复杂! ? ? ({type:"INC", payload: Promise}); 注:redux-promise 允许我们 dispatch 一个 payload 为 Promise 的 action; redux-promise redux-promise应用示例 ? 总结: redux-promise 虽然比 redux-thunk 封装的更深,但仍然存在几个问题: a. 总结: redux-promise-middleware 与 redux-promise 差不多...不多说了... ?
redux-promise import thunk from 'redux-thunk'; import { createLogger } from 'redux-logger'; import promiseMiddleware from 'redux-promise'; const logger = createLogger(); const store = createStore applyMiddleware(thunk, promiseMiddleware, logger) // 按照严格的循序 ); 上一种方法是使用 Action Creator 返回函数来操作异步,使用 redux-promise resolve, reject)=> { setTimeout(()=> { dispatch(deleteUser(index)) }, 2000) })) } 使用 redux-promise
六、redux-promise 中间件 ---- 既然 Action Creator 可以返回函数,当然也可以返回其他值。 这就需要使用 redux-promise 中间件。 import { createStore, applyMiddleware } from 'redux'; import promiseMiddleware from 'redux-promise'; 看一下 redux-promise 的源码,就会明白它内部是怎么操作的。
六、redux-promise 中间件 既然 Action Creator 可以返回函数,当然也可以返回其他值。 这就需要使用redux-promise中间件。 import { createStore, applyMiddleware } from 'redux'; import promiseMiddleware from 'redux-promise'; 看一下redux-promise的源码,就会明白它内部是怎么操作的。
中间件 redux-promise 中间件 既然 Action Creator 可以返回函数,当然也可以返回其他值。 这就需要使用redux-promise中间件。 import { createStore, applyMiddleware } from 'redux'; import promiseMiddleware from 'redux-promise'; .then(response => { type: 'FETCH_POSTS', payload: response.json() }); }); redux-promise createStore, applyMiddleware} from 'redux'; import thunk from 'redux-thunk' import redudxPromise from 'redux-promise
有哪些异步处理中间件 9.3. redux-thunk 9.4. redux-promise 9.5. redux-promise-middleware 9.6. 总结一下 10. redux-promise:基于Promise的异步处理; redux-promise-middleware:还是Promise; redux-saga:最优雅!最复杂! console.log(count); }, }); // Dispatch actions (async () => { store.dispatch(asyncInc()); })(); 9.4. redux-promise redux-thunk: redux-thunk 允许 dispatch 一个 thunk 函数; store.dispatch((dispatch, getState) => { ... }) redux-promise : redux-promise 允许 dispatch 一个 payload 为 Promise 的 action; store.dispatch({type:"INC", payload: Promise
redux比较常用的中间件有 redux-saga、redux-thunk、redux-promise等 都是为了解决dispatch action异步处理问题 redux中间件 对redux应用实现异步
RxJS 操作符” 福利四:redux-observable 中文文档 中文文档地址:https://redux-observable-cn.js.org/ 是不是厌倦了 Redux 全家桶,好不容易引入 redux-promise
比如 redux-thunk 或 redux-promise,分别是使用异步回调和 Promise 来解决异步 action 问题的。 **redux-thunk 和 redux-promise 刚好就是代表这两个面。 当业务逻辑多且复杂的时候会发生什么情况呢? redux-saga的优势 Redux 处理异步的中间件 redux-thunk 和 redux-promise,当然 redux 的异步中间件还有很多,他们可以处理大部分场景,这些中间件的思想基本上都是把异步请求部分放在了
redux-thunk, redux-promise 等: 相对原始的异步方案,适用于更简单的场景。在 action 需要组合、取消等操作时,会不好处理。
比如 redux-thunk 或 redux-promise 。 Redux-promise redus-promise 和 redux-thunk 的思想类似,只不过做了一些简化,成功失败手动 dispatch 被封装成自动了: const FETCH_DATA = redux-thunk 和 redux-promise 刚好就是代表这两个面。 redux-thunk 和 redux-promise 的具体使用就不介绍了,这里只聊一下大概的思路。 大部分简单的异步业务场景,redux-thunk 或者 redux-promise 都可以满足了。 上面说的 Flux 和 Redux,和具体的前端框架没有什么关系,只是思想和约定层面。 组件的 props mapDispatchToProps 把UI组件的事件映射到 dispatch 方法 Redux-saga 刚才介绍了两个Redux 处理异步的中间件 redux-thunk 和 redux-promise
从简单的 react-thunk 到 redux-promise 再到 redux-saga等等,都代表这各自解决redux异步流管理问题的方案 4.1 、redux-thunk redux-thunk 4.2、redux-promise 使用redux-promise中间件,允许action是一个promise,在promise中,如果要触发action,则通过调用resolve来触发 4.3、redux-sage
比如 redux-thunk 或 redux-promise 。 Redux-promise redus-promise 和 redux-thunk 的思想类似,只不过做了一些简化,成功失败手动 dispatch 被封装成自动了: const FETCH_DATA = redux-thunk 和 redux-promise 刚好就是代表这两个面。 redux-thunk 和 redux-promise 的具体使用就不介绍了,这里只聊一下大概的思路。 大部分简单的异步业务场景,redux-thunk 或者 redux-promise 都可以满足了。 上面说的 Flux 和 Redux,和具体的前端框架没有什么关系,只是思想和约定层面。 props mapDispatchToProps 把UI组件的事件映射到 dispatch 方法 Redux-saga 刚才介绍了两个Redux 处理异步的中间件 redux-thunk 和 redux-promise
redux-saga与其他redux中间件比较 •redux-thunk 的缺点在于api层与store耦合,优点是可以获取到各个异步操作时期状态的值,比较灵活,易于控制 •redux-promise的优点是
applyMiddleware.js: Redux官方附带一个的Store增强器,用于扩展、增强Store的dispatch函数功能(例:日志记录[redux-logger]、异步管理[redux-thunk、redux-promise
这种机制可以让我们改变数据流,实现如异步 action ,action 过 滤,日志输出,异常报告等功能常见的中间件:redux-logger:提供日志输出;redux-thunk:处理异步操作;redux-promise 这种机制可以让我们改变数据流,实现如异步action ,action 过滤,日志输出,异常报告等功能redux-logger:提供日志输出redux-thunk:处理异步操作redux-promise:
但不处理异步、副作用的情况,而把这个丢给了其他中间件,诸如redux-thunk\redux-promise\redux-saga等等,选择多也容易造成混乱~ 啰嗦。
generator函数,比async await功能更丰富 • redux-observable:基于rxjs,学习成本较高 • 状态更新日志 • redux-logger • 处理promise • redux-promise
但不处理异步、副作用的情况,而把这个丢给了其他中间件,诸如redux-thunk\redux-promise\redux-saga等等,选择多也容易造成混乱~ 啰嗦。
不用考虑多个异步操作的时序问题,因为从action历史记录来看,顺序是固定不变的,同步还是异步过程中dispatch的不重要 与同步场景没太大区别,只是action多一些,一些中间件(redux-thunk、redux-promise