javascript - 在反应中将 js 迁移到 tsx
问题描述
我尝试将我的 js 文件迁移到 tsx。
当页面加载页面时,alldata 将从我的 api 设置,所以在 api 设置之前,alldata 只是空数组
import classes from "./vertification.module.scss";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faCheck } from "@fortawesome/free-solid-svg-icons";
import { getAllVertification } from "../../helpers/database";
import { useEffect, useState } from "react";
export default function Vertification() {
const [update, setUpdate] = useState(false);
const [allData, setAlldata] = useState([]);
useEffect(() => {
const data = async () => {
const data = await getAllVertification();
if (!data.status) {
} else {
setAlldata(data.data);
}
};
data();
}, [update]);
return (
<div className={classes.vertification}>
<div className={classes.tab}>
<table>
<tbody>
{allData.map((data, key) => {
return (
<tr key={key}>
<td>{data.identityType.toUpperCase()}</td>
<td>{data.identityNumber}</td>
<td>{data.nationality}</td>
<td>{data.firstName}</td>
<td>{data.secondName}</td>
<td>
{data.gender.charAt(0).toUpperCase() + data.gender.slice(1)}
</td>
<td>{data.birthDate}</td>
<td>{data.bornCountry}</td>
<td>{data.profession}</td>
<td>{data.province}</td>
<td>{data.city}</td>
<td>{data.address}</td>
<td>{data.postCode}</td>
<td>img</td>
<td>
<button>
<FontAwesomeIcon icon={faCheck} />
</button>
</td>
</tr>
);
})}
</tbody>
</table>
</div>
</div>
);
}
有人可以向我解释并帮助我解决它吗?
解决方案
您可以添加 { allData && allData.map((data, key)} 来验证空数组是否有效。此外,您应该在初始化变量时定义数据类型。
推荐阅读
- swift - 如何在 Swift 4 中仅圆角 NSButton 的一侧?
- scheme - 将列表的第二个元素移到前面的递归方法是什么?[球拍]
- c# - Regex.Matches 使用前瞻没有得到任何匹配
- html - 如何在忍者窗体中添加图标
- javascript - 使用 Node.js 从 firebase 获取特定的键值对
- c# - 从 Nunit 测试结果生成报告
- search - 为 Outlook 公用文件夹创建搜索文件夹
- csv - 转换 csv 文件头
- emacs - Emacs 首次启动不会安装 package-selected-packages 中的所有包
- php - MySQL 触发器不会触发