gpt4 book ai didi

reactjs - 在渲染 react 钩子(Hook)之前等待 API 调用数据

转载 作者:行者123 更新时间:2023-12-03 20:27:09 27 4
gpt4 key购买 nike

我进行 API 调用。

看来 React 继续构建没有数据的表,从而引发错误
Uncaught TypeError: Cannot read property 'map' of undefined
这就是我正在做的
useEffect()很简单

  const [data, setData] = useState();
const [isBusy, setBusy] = useState()

useEffect(() => {
setBusy(true);
async function fetchData() {
const url = `${
process.env.REACT_APP_API_BASE
}/api/v1/endpoint/`;

axios.get(url).then((response: any) => {
setBusy(false);
setData(response.data.results)
console.log(response.data.results);
});
}

fetchData();
}, [])

然后我尝试使用上面 API 调用中的数据呈现一个表(当它可用时)
            <div className="col-md-12 mt-5">
{isBusy ? (
<Loader />
) : (
<table className="table table-hover">
<thead>
<tr>
<th scope="col">Pharmacy User Full Name</th>
<th scope="col">Tests This Month</th>
<th scope="col">Tests This Week</th>
<th scope="col">Last Test Date</th>
</tr>
</thead>
<tbody>
{data.map((item: any, index: any) => {
return (<tr>
<th scope="row" key={index}>{item.name}</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
)
})}

</tbody>
</table>
)}
</div>

以上对我来说似乎很直观。所以不确定我需要做什么。谢谢。

最佳答案

你应该设置isBusyuseState 中为真初始值

//                            initial value
const [isBusy, setBusy] = useState(true)

并检查 data之前 data.map
// checking data
{data && data.map((item: any, index: any) => {
return (<tr>
<th scope="row" key={index}>{item.name}</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
)
})}

关于reactjs - 在渲染 react 钩子(Hook)之前等待 API 调用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com