Redux 中 Saga 问题
Saga的工作方式是:
监听一些异步action是否发出,一旦发出,则进行异步处理,交由新的同步action改变reducer。
首先我们需要一个saga文件 :内容如下 只粘代码
//引入两个方法
import { delay } from 'redux-saga'
import { put, takeEvery , all } from 'redux-saga/effects'
function* helloSaga() {
console.log('Hello Sagas!');
}
//Worker saga, 工作saga,这里执行异步语句
function* addserver() {
const {result} = yield fetch("/api/a.json").then(data=>data.json());
//发出一个新的Action到store去。
yield put({"type":"ADD" , number : result});
}
//Watcher saga ,监听器saga
function* watchaddserver() {
//takeEvery:当有action的type是第一个参数的时候,立刻执行第二个参数。
yield takeEvery('ADDSERVER', addserver);
}
//默认暴露一个东西
export default function* rootSaga() {
//并行一些Effect
yield all([
helloSaga(),
watchaddserver()
]);
}
编辑主文件:
到底什么是saga?:
是一个系列的工作文件,拦截action执行、执行异步、put出一个新的action改变reducer。
个人总结如图:
用saga做异步的时候,不需要写bindActionCreator了。