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。