【发布时间】:2021-08-24 23:58:51
【问题描述】:
我有一个 Home 组件需要等待 requestQuery api 完成,然后解析响应 data 并将 data 传递给 Child 组件,如下代码所示。如果我将data 变量移出useCallBack 并将响应data 硬编码为模拟数据。我的代码正在运行。但是,在我使用异步函数将数据变量移动到 useCallBack 之后,我得到了错误
Uncaught (in promise) ReferenceError: results is not defined
我该如何解决?
import React, {useCallback, FC, useEffect, useState} from 'react';
export const Home: FC = () => {
const initData = useCallback(async (): Promise<void> => {
// attempt to load based on flow
const [hasLoadingFailed, setLoadingFailed] = useState<boolean>(false);
const [isLoading, setLoading] = useState<boolean>(false);
try {
const {data, errors} = await requestQuery({num: 1});
// if errors or no data, throw error
if (!data || errors?.length) throw Error('Errors Retrieving Data');
const {results = []}: QueryResponse = data;
console.log({results}); //no problem to get results
} catch {
setLoadingFailed(true);
} finally {
setLoading(false);
}
}, []);
useEffect(() => {
initData();
}, [initData]);
return (
<div><Child data={results} /></div>
);
};
``
【问题讨论】:
-
看起来结果变量在初始渲染期间未定义或为空
标签: reactjs react-native async-await