javascript - 无法读取未定义的属性“地图”
问题描述
我有一个无法读取地图属性的错误,我试图通过使用 RESTful API 从数据库中获取数据并将其存储到一个数组中来在我的页面上显示一个目录。我第一次打开网站时一切正常,它显示表格没有问题,但是当我刷新时它给出了错误。
这是我获取数据并使用地图将其显示在表格中的函数:
const ListTodos = ()=>{
const [todos,setToods]=useState([]);
const getTodos = async ()=>
{
try{
const res = await fetch("http://localhost:3080/get")
console.log(res)
const jsondata = await res.json();
setToods(jsondata);
}catch(err){
console.error(err.message);
}
}
useEffect(() => {
getTodos();
}, []);
arr = todos[0];
return (
<Fragment>
<table class="table mt-5 text-center">
<thead>
<tr>
<th>ID_Event</th>
<th>Name_Event</th>
<th>Date</th>
<th>Address</th>
<th>Duration</th>
<th>Description</th>
<th>Delete</th>
<th></th>
</tr>
</thead>
<tbody>
{arr.map(arr => (
<tr>
<td>{arr.ID_Event}</td>
<td>{arr.Name_Event}</td>
<td>{arr.Date}</td>
<td>{arr.Address}</td>
<td>{arr.Duration}</td>
<td>{arr.description}</td>
<td>
<button className="btn btn-danger" onClick={() => deleteevnet(arr.ID_Event)}>Delete</button>
</td>
</tr>
))}
</tbody>
</table>
</Fragment>
);
}
解决方案
arr = todos[0]
通过在顶层编写,您正在创建一个全局变量,undefined
直到获取数据(空数组的第一个元素)。
您应该理想地声明它,因为const
它是功能组件的本地,并在它与以下内容时处理这种情况undefined
:
{arr && arr.map(arr => (
<tr>
<td>{arr.ID_Event}</td>
<td>{arr.Name_Event}</td>
<td>{arr.Date}</td>
<td>{arr.Address}</td>
<td>{arr.Duration}</td>
<td>{arr.description}</td>
<td>
<button className="btn btn-danger" onClick={() => deleteevnet(arr.ID_Event)}>Delete</button>
</td>
</tr>
))}
推荐阅读
- html - 如何在不妨碍 vue.js 中现有卡片的情况下应用背景颜色?
- php - 如何从 SQL 数据库中检查可用的预订
- python - 如何从 python 中的 Tkinter GUI 读回更新的 Pandas 数据帧?
- excel - 在 foreach 循环中使用 Excel 进行 Adf Copy 任务
- javascript - 用户登录模拟器,js,验证用户名和密码,失败
- excel - Selection.AutoFill Destination:=Range(strRange) 导致 Runtimeerror `1004` 无法运行范围对象的 AutoFill 方法
- google-chrome - Manifest V3 - 每当我访问 Google 网站时,Chrome 都会崩溃
- python - 如何从python中的HTML文件中提取选择元素的id值?
- r - xtfrm.data.frame(x) 中的警告:不能 xtfrm 数据帧:在 R 中对数据帧进行数字排序时出错
- android - 单元测试中的调用目标异常