等价于 yield take Redux thunks 中的 Redux Saga
Equivalent of a yield take Redux Saga in Redux thunks
我目前正在将代码库中的 sagas 转换为 thunk。
我知道 Sagas 的特定功能,例如 yield put
、yield call
可以“直接翻译”到 thunk dispatch(...)
和 await fn...
。
我遇到了 yield take
,据我所知,它采取了商店中包含的一组操作,并指示中间件等待来自商店的那些指定操作之一,结果是一个操作对象被派遣了吗?
如果使用 Redux thunk,“等效”是什么?
非常感谢!
传奇示例:
export function* sample() {
try {
const response = yield call(api.sample)
yield put(setData(response.data))
} catch (error) {
yield put(setError(error))
}
}
export function* sampleSaga() {
yield takeEvery( YOUR_TYPE, sample)
}
如果你想把它改成 redux thunk ,你可以这样做:
export function sample(){
return (dispatch, getState) => {
api.sample()
.then((response)=> dispatch(setData(response.data)))
.catch(error => Promise.reject(error))
}
}
我目前正在将代码库中的 sagas 转换为 thunk。
我知道 Sagas 的特定功能,例如 yield put
、yield call
可以“直接翻译”到 thunk dispatch(...)
和 await fn...
。
我遇到了 yield take
,据我所知,它采取了商店中包含的一组操作,并指示中间件等待来自商店的那些指定操作之一,结果是一个操作对象被派遣了吗?
如果使用 Redux thunk,“等效”是什么?
非常感谢!
传奇示例:
export function* sample() {
try {
const response = yield call(api.sample)
yield put(setData(response.data))
} catch (error) {
yield put(setError(error))
}
}
export function* sampleSaga() {
yield takeEvery( YOUR_TYPE, sample)
}
如果你想把它改成 redux thunk ,你可以这样做:
export function sample(){
return (dispatch, getState) => {
api.sample()
.then((response)=> dispatch(setData(response.data)))
.catch(error => Promise.reject(error))
}
}