学习 redux 的过程中了解到处理异步也需要在 dispatch 之前,就像 vuex 的 mutations 和 actions 一样,所以到底是谁借鉴谁啊 😂
因为 dispatch 一执行就会立马执行 reducer ,而 redux 是不能在 reducer 里产生异步的,也就意味着异步操作一定要在 reducer 触发前执行完,像 vuex 通过 actions 处理完异步再执行 mutaions 一样,我们也需要一个 actions 来做事,所以就需要中间件登场了
其中 redux-thunk 应该是用的最多的了,还有一个 redux-saga 听说更高级但是上手门槛也比较高,两个 npm 下载量不是一个等级,所以先由简入繁从 redux-thunk 上手
因为执行实际的关系,当我们触发 dispatch 的时候会先经过中间件的增强然后 next 到 reducer,所以我搂了一眼 redux-thunk 的源码,大概了解了基本实现,以下是我自己手写的一个简版 redux-thunk 的源码
1 | import { legacy_createStore, applyMiddleware } from "redux" |