Yield 调用返回 undefined
Yield call returning undefined
任何人都可以帮我解决我的代码有什么问题。我试图像这样从 sagas 文件中的 API 获取数据。我尝试在读取函数中 console.log response.data 并获取数据(数组)。但是当它在生成器函数中赋值给变量(数据)时,它没有定义。
// sagas.js
const PATH = 'product';
const read = async (path) => {
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
}
function* loadProduct() {
try {
const data = yield call(read, PATH);
yield put(actions.loadProductSuccess(data));
}
catch (error) {
console.log('what's the error :', error)
yield put(actions.loadProductFail());
}
}
export default function* rootSaga() {
yield all([
takeEvery('LOAD_PRODUCT', loadProduct)
]);
}
您需要 return await request.get(path)
,然后您将在您的 saga 函数中获得 response.data
。
非常感谢,我遇到了问题。
我忘记了大括号,我这样更改我的代码:
const PATH = 'product';
const read = async (path) =>
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
...
它工作正常!
任何人都可以帮我解决我的代码有什么问题。我试图像这样从 sagas 文件中的 API 获取数据。我尝试在读取函数中 console.log response.data 并获取数据(数组)。但是当它在生成器函数中赋值给变量(数据)时,它没有定义。
// sagas.js
const PATH = 'product';
const read = async (path) => {
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
}
function* loadProduct() {
try {
const data = yield call(read, PATH);
yield put(actions.loadProductSuccess(data));
}
catch (error) {
console.log('what's the error :', error)
yield put(actions.loadProductFail());
}
}
export default function* rootSaga() {
yield all([
takeEvery('LOAD_PRODUCT', loadProduct)
]);
}
您需要 return await request.get(path)
,然后您将在您的 saga 函数中获得 response.data
。
非常感谢,我遇到了问题。 我忘记了大括号,我这样更改我的代码:
const PATH = 'product';
const read = async (path) =>
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
...
它工作正常!