React — 什么是 redux-saga?
redux-saga
是一个库,旨在使 React/Redux 项目中的副作用(数据获取等异步操作和访问浏览器缓存等可能产生副作用的动作)更容易,更好。
1.安装
$ npm install --save redux-saga
2.redux-saga 的模型概念是什么?
Saga就像你的项目中的一个单独的线程,它独自负责副作用。redux-saga
是一个 redux中间件,这意味着它可以在项目启动中使用正常的 Redux 操作,暂停和取消该线程,它可以访问完整的 Redux 应用程序状态,并且它也可以调度 Redux 操作。
3.在 redux-saga 中call()
和put()
之间有什么区别?
call()
和put()
都是 Effect 创建函数。call()
函数用于创建 Effect 描述,指示中间件调用 promise。put()
函数创建一个 Effect,指示中间件将一个 Action 分派给 Store。
让我们举例说明这些 Effect 如何用于获取特定用户数据。
function* fetchUserSaga(action) { // `call` function accepts rest arguments, which will be passed to `api.fetchUser` function. // Instructing middleware to call promise, it resolved value will be assigned to `userData` variable const userData = yield call(api.fetchUser, action.userId) // Instructing middleware to dispatch corresponding action. yield put({ type: 'FETCH_USER_SUCCESS', userData })
4.什么是 Redux Thunk?
Redux Thunk中间件允许您编写返回函数而不是 Action 的创建者。 thunk 可用于延迟 Action 的发送,或仅在满足某个条件时发送。内部函数接收 Store 的方法dispatch()
和getState()
作为参数。
5.redux-saga
和redux-thunk
之间有什么区别?
Redux Thunk和Redux Saga都负责处理副作用。在大多数场景中,Thunk 使用Promises来处理它们,而 Saga 使用Generators。Thunk 易于使用,因为许多开发人员都熟悉 Promise,Sagas/Generators 功能更强大,但您需要学习它们。但是这两个中间件可以共存,所以你可以从 Thunks 开始,并在需要时引入 Sagas。