react redux的异步处理介绍(redux-saga)1:saga helper

saga helper,异步处理助手,翻译成汉字失去了原有代码味道

helper是redux-sagad对内部函数调用的封装

其中之一是 takeEvery

举例,我们尝试编写一个从远程服务器获取用户数据的功能,示范代码如下

 1 import { call, put } from 'redux-saga/effects'
 2 
 3 export function* fetchData(action) {
 4    try {
 5       const data = yield call(Api.fetchUser, action.payload.url)
 6       yield put({type: "FETCH_SUCCEEDED", data})
 7    } catch (error) {
 8       yield put({type: "FETCH_FAILED", error})
 9    }
10 }

上面代码是对任务的具体实现定义,put 是发出一个action,在“ 合适”的时间由store完成具体操作。(redux会去查找reducer来执行)

任务建立完毕,我们需要向saga注册,才能得到执行

如何注册呢?

代码如下:

1 import { takeEvery } from 'redux-saga/effects'
2 
3 function* watchFetchData() {
4   yield takeEvery('FETCH_REQUESTED', fetchData)
5 }

5行  takeEvery的意思,就是拦截一切 FETCH_REQUESTED 的动作,简单理解就是(向store)注册监听  FETCH_REQUESTED动作。(具体细微操作takeEvery已经替你封装好了)

takeEvery就是一个helpler。

posted @ 2020-10-04 03:03  小侬  阅读(284)  评论(0编辑  收藏  举报