提问人:Mike 提问时间:8/28/2023 更新时间:8/28/2023 访问量:326
在 astro 项目中使用 react 组件从 API 获取数据
Fetching data from an API using a react component in an astro project
问:
我已经将 react 集成到我的 astro 项目中,希望能加入一些动态功能。一切都很好,除非尝试从我的一个 react 组件内的远程 rest api 端点获取数据。我知道顶级异步,当我尝试它时,它似乎工作正常。但是,我的目标是创建一个可以在单击按钮时自行刷新的组件。因此,为了做到这一点,我选择使用 usestate 和 useffect 钩子来完成任务。一旦我尝试在 useeffect 钩子中使用异步 await 函数进行提取,该组件就会在不获取数据的情况下进行渲染。以下代码不返回除标题以外的任何内容。
import React, { useState, useEffect } from 'react';
your text
函数 UserRecords() { const [users, setUsers] = useState([]); const [toggle, setToggle] = useState(true);your text
your text
your text
useEffect(() => { async function fetchUsers() { try { const response = await fetch(“http://localhost:3001/userInfo”); if (!response.ok) { throw new Error('网络响应不正常'); } const userData = 等待 response.json(); setUsers(用户数据); } catch (error) { console.error(“获取或解析用户数据时出错:”, error);your text
your text
your text
your text
your text
your text
your text
your text
your text
your text
your text
}
your text
}
your text
fetchUsers(); }, [切换]);your text
your text
const changeValue = () => { setToggle(prevValue => !prevValue);your text
your text
};
your text
返回 (your text
<>
your text
标题
your text
your text
{users.map((user) => {user.username})}your text
your text
更新your text
</>
your text
);
your text
}
your text
导出默认 UserRecords;
我使用坚实的 js 框架尝试了同样的事情,我也将其添加到 astro 项目中,只是为了看看它会如何比较并且结果相同。顶级异步似乎工作正常,但是当尝试在状态和副作用的上下文中使用它时,它会呈现除端点中所需数据之外的所有内容。
答: 暂无答案
评论