javascript - 在React的useEffect()中获取数据返回 "undefined"

标签 javascript reactjs promise use-effect react-functional-component

我正在尝试从数据库中获取数据。这是一个获取请求。只要我在异步函数中使用获取的数据,一切都可以正常工作。但除此之外,它只是返回“未定义”。 我究竟做错了什么? 感谢您的帮助:)

const [accountInfos, setAccountInfos] = useState();
      const [error, setError] = useState();
      const [loading, setLoading] = useState(true);

      useEffect(() => {
        (async function runEffect() {
            const fetchedAccountInfos =  await fetchAccountInfos();
            if (fetchedAccountInfos && fetchedAccountInfos.length > 0) {
                console.log(fetchedAccountInfos)  //This console.log works
                setAccountInfos(fetchedAccountInfos);
                setLoading(false);
                console.log(accountInfos)  //This console.log returns 
                                             "undefined"
              } else {
                setError("Accountdaten können nicht geladen werden!");
                setLoading(false);
                };
        })();
      }, []);
      console.log(accountInfos);  //This console.log returns "undefined"

最佳答案

它不是特定于 React 的:这是一个异步函数,因此 Promise 将在控制台日志发生后解析,这就是为什么你会得到 未定义。这只是正常的 JS 行为——在 console.log 执行时,值未定义。

在定义 JSX 的返回值中,如果 accountinfos 为 null,则呈现 null(或某些空状态组件),否则根据 API 的返回值呈现实际组件。一旦收到响应,状态将更新并且组件将重新渲染

关于javascript - 在React的useEffect()中获取数据返回 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58934643/

相关文章:

javascript - 使用javascript移动div

javascript - localstorage javascript 中的效果更改

javascript - Chrome PDF Viewer 嵌入式下载按钮不起作用

javascript - 使用 React.js 存储在 fetch() 上生成的 token

reactjs - 如何在 View 加载时更改导航栏标题

javascript - 正则表达式 ("str","i") 和 '/' +"str"+'/i' 之间有什么区别

javascript - React - jsx --watch 在第一次转换后什么都不做

javascript - 同步链接 Promise

从头开始的 Javascript Promise

javascript - Promise.All 用于图像列表