无法在 redux saga 的 yield 调用中使用 fetch
Can't use fetch inside yield call in redux saga
我正在进行 api 调用,根据响应,我必须更新状态。
这就是我正在做的。
function* testEndpointConnectivity(action){
const { testConnectivityUri, rowItem } = action.payload
const res= yield call( fetch(testConnectivityUri).then(response => {
//something here
})
)
yield put({type: SOME_ACTION});
}
但这行不通。我收到错误
Error: call: argument fn is undefined
起初我尝试将 yield put 放在 catch 和 then 中响应,但 Whosebug 告诉我使用 yield call.
请帮忙。
不正确
如果您选中 doc,您将看到第一个参数是函数,然后您可以发送参数:
call(fn, ...args)
因此,在您的示例中,正确的变体必须如下所示:
function* testEndpointConnectivity(action) {
const { testConnectivityUri, rowItem } = action.payload;
const response = yield call(fetch, testConnectivityUri);
// and in generator you can wait your answer, you dont need use .then
console.log("response", response);
yield put({ type: SOME_ACTION });
}
// this error mean, first argument in call function must be fetch
Error: call: argument fn is undefined
我正在进行 api 调用,根据响应,我必须更新状态。 这就是我正在做的。
function* testEndpointConnectivity(action){
const { testConnectivityUri, rowItem } = action.payload
const res= yield call( fetch(testConnectivityUri).then(response => {
//something here
})
)
yield put({type: SOME_ACTION});
}
但这行不通。我收到错误
Error: call: argument fn is undefined
起初我尝试将 yield put 放在 catch 和 then 中响应,但 Whosebug 告诉我使用 yield call.
请帮忙。
不正确
如果您选中 doc,您将看到第一个参数是函数,然后您可以发送参数:
call(fn, ...args)
因此,在您的示例中,正确的变体必须如下所示:
function* testEndpointConnectivity(action) {
const { testConnectivityUri, rowItem } = action.payload;
const response = yield call(fetch, testConnectivityUri);
// and in generator you can wait your answer, you dont need use .then
console.log("response", response);
yield put({ type: SOME_ACTION });
}
// this error mean, first argument in call function must be fetch
Error: call: argument fn is undefined