【发布时间】:2020-07-31 16:54:31
【问题描述】:
我正在尝试从我的 redux-saga 中的 API 获取数据,但我在我的 redux-saga 中从const {body: {data}} =yield getData() 收到以下错误:
cannot read property body of udefined
这是我的 API 函数:
export function* getData() {
yield agent
.get(
"https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=xxx"
)
.then((res) => {
getCurrencies(res.body.data);
console.log('--------res.body.data', res.body.data);
setPageCount();
})
.catch((err) => {
console.log(err);
});
}
.then是返回数据本身,所以不是未定义的
这是我的 redux-saga 本身:
function* loadDataAsync() {
console.log("SAGAS WORKS");
yield delay(5000);
try {
const {body: {data}} =yield getData()
console.log(data)
yield put({type:"LOAD_DATA_ASYNC_SUCCESS"});
} catch (err) {
console.log(err)
yield put({type:"LOAD_DATA_ASYNC_ERROR"})
}
}
export function* watchLoadDataAsync() {
yield takeLatest("LOAD_DATA_ASYNC", loadDataAsync);
}
请问有什么解决办法吗?
【问题讨论】:
-
“但我收到以下错误:无法定义未定义的数据” - 在哪里?错误点的堆栈跟踪是什么?那时变量的值是多少?
-
我得到的错误来自这里
const {body: {data}} =yield getData() -
yield getData()的结果是什么?.then(...)没有返回任何东西,所以可能是未定义的? -
.then 返回我检查过的数据本身,它不是未定义的
-
尝试删除
.then和.catchforgetDataapi 调用并将其更改为yield call(...)。
标签: reactjs redux redux-saga