在redux saga中,"put"是一个用于触发action的effect。它用于向redux store分发一个action,以便被reducer处理。当我们在saga中使用"put"时,我们可以测试多个顺序的"put"调用的单元测试。 在进行单元测试之前,我们需要安装一些必要的依赖项。首先,我们需要安装redux-saga-test-plan,它是一个用于测试redux-saga的工...
import{takeEvery,put,call}from"redux-saga/effects" import{post}from"@/utils/http" function*watchSaga() { yieldtakeEvery('asyncadd',addSaga) } /* 在此处完成网络请求 */ function*addSaga({payload}) { /*收到发过的的dispatch saga帮我们实现了这个co赋值过程*/ letret=yieldcall(post,payload) ...
put:异步函数有结果的时候,派发action; takeEvery:当监听到aciton时,执行worker saga。 saga主要用到的是generator。 使用: 新建sagas.js import { takeEvery , put} from 'redux-saga/effects'import axios from'axios'; import { GET_INIT_LIST } from'./actionType'; import { initListAction} from'./ac...
import{all,put,takeEvery}from'redux-saga/effects'function*increment(){// 相当于:dispatch({ type: 'increment' })yieldput({type:'increment'})}function*watchIncrement(){// 监听类型为increment_saga的action,监听到启动incrementyieldtakeEvery('increment_saga',increment)}function*rootSaga(){// 启动wat...
put 在前面提到,redux-saga做为中间件,工作流是这样的: UI——>action1———>redux-saga中间件———>action2———>reducer.. 从工作流中,我们发现redux-saga执行完副作用函数后,必须发出action,然后这个action被reducer监听,从而达到更新state的目的。相应的这里的put对应与redux中的dispatch,工作流程图如下: ...
在saga的Middleware中,可以使用takeEvery或者takeLatest等API来监听某个action,当某个action触发后,saga可以使用call、fetch等api发起异步操作,操作完成后使用put函数触发action,同步更新state,从而完成整个State的更新。 API takeEvery 用来监听action,每个action都触发一次,如果其对应是异步操作的话,每次都发起异步请求,而...
在上面的代码中,分别有 Worker Saga, Watcher Saga 和 最后的 rootSaga Worker Saga 用于执行真正的任务,在这里可以使用 call 来发送请求,可以通过 put 来调用 reducerWatcher Saga 用于监听 action, 当 dispatch 到所监听的 action 时,就会调用对应的 Worker SagarootSaga 则用于启动 Watcher Saga 通常对于异步...
然后看看fetchUserInfo函数,这个函数也不复杂,就是调用一个API函数fetchUserInfoAPI去获取数据,注意我们这里函数调用并不是直接的fetchUserInfoAPI(),而是使用了Redux-Saga的call这个effect,这样做可以让我们写单元测试变得更简单,为什么会这样,我们后面讲源码的时候再来仔细看看。获取数据后,我们调用了put去发出FETCH_USER_...
具体的saga实现可以使用Redux-Saga提供的方法,比如call,put之类的,可以让单元测试更好写。 一个action可以被Redux-Saga和Reducer同时响应,比如上面的FETCH_USER_INFO发出后我还想让页面转个圈,可以直接在reducer里面加一个就行: javascript ... case 'FETCH_USER_INFO': return { ...state, isLoading: true }...
在saga的Middleware中,可以使用takeEvery或者takeLatest等API来监听某个action,当某个action触发后,saga可以使用call、fetch等api发起异步操作,操作完成后使用put函数触发action,同步更新state,从而完成整个State的更新。 API takeEvery 用来监听action,每个action都触发一次,如果其对应是异步操作的话,每次都发起异步请求,而...