【发布时间】:2020-12-21 02:17:38
【问题描述】:
我正在尝试使用 api(sample response) 来提供对象列表并将其呈现在表中以做出反应。以下是我的代码。我收到错误data is not defined
Here is the code when I hardcoded data, the table got rendered perfectly
import React, { useEffect, useState } from "react";
function renderTableData() {
return data.map((student, index) => {
const { config, text, source_link, tab_type } = student //destructuring
return (
<tr key={config}>
<td>{config}</td>
<td>{text}</td>
<td>{source_link}</td>
<td>{tab_type}</td>
</tr>
)
})
}
const useFetch = (url) => {
const [data, setData] = useState('');
const [loading, setLoading] = useState(true);
useEffect(async () => {
const response = await fetch(url, {
method: 'GET',
})
const data = await response.json()
console.log(data)
setData(data)
setLoading(false)
}, []);
return { data, loading };
}
export default function CreateTestcaseStep2() {
const { data, loading } = useFetch(ENPOINT_URL_GOES_HERE)
return (
<div>
<h1 id='title'>React Dynamic Table</h1>
<table id='students'>
<tbody>
{renderTableData()}
</tbody>
</table>
</div>
);
}
请指出我做错了什么,因为renderTableData 函数无法获取data 对象。
【问题讨论】:
-
也许 fetch(..).then(response => response.json()).then(json => {...})
-
还尝试将默认数据初始化为空数组,例如 const [data, setData] = useState({data:[]});这样你就可以返回( {data.lenght > 0 && ....
-
将数据传递给您的
renderTableData()函数。 -
@ToddSkelton 我也试过了
{renderTableData({data})},但抛出错误data.map is not a function
标签: javascript reactjs html-table react-hooks