thunk
为了让Reducer在异步操作后自动执行,于是出现了thunk
thunk加在Reducer还是action或者view中呢?
1 | const store = createStore( |
thunk使得dispatch一个函数
1 | (dispatch,getState)=>{ |
saga
特性
- reducers 处理数据
- effects 接收数据
- subscriptions 监听数据
Effects
- Effect 是一个 javascript 对象,里面包含描述副作用的信息,可以通过 yield 传达给 sagaMiddleware 执行,所有的 Effect 都必须被 yield 才会执行
yield fetch(UrlMap.fetchData)===>yield call(fetch, UrlMap.fetchData) - 其实是一个包含Generator的函数,函数中依次按下面执行的异步操作redux的过程
实现
1
2
3
4
5
6
7
8
9
10yield call(service,{params})
yield put({
type:'',
payload:{
}
})
const id = yield select(state=>state.id)