Moh*_*man 15 reactjs react-hooks react-typescript
从 API 获取新闻标题并每页显示 10 条新闻及其 ID。同样是 10 秒刷新,新的头条新闻出现。TableHead 映射内容看起来不错,但 tableBody 提供了此错误:
输入“字符串|” 日期”不可分配给类型“ReactNode”
//Init post
export interface InitPost {
title: string;
url: string;
created_at: Date;
author: string;
}
//state of post
const [posts, setPosts] = useState<InitPost[]>([]);
//colums
const columns: readonly Column[] = [
{ id: "title", label: "Title", minWidth: 170 },
{ id: "url", label: "URL", minWidth: 150 },
{ id: "created_at", label: "Created At", minWidth: 100 },
{ id: "author", label: "Author", minWidth: 100 },
];
Run Code Online (Sandbox Code Playgroud)
桌头部分: 精细
<TableHead>
<TableRow>
{columns.map((column) => (
<TableCell
key={column.id}
align={column.align}
style={{ minWidth: column.minWidth }}
>
{column.label}
</TableCell>
))}
<TableCell />
</TableRow>
</TableHead>
Run Code Online (Sandbox Code Playgroud)
错误部分
<TableBody>
{posts.map((row, index) => {
return (
<TableRow key={index}>
{columns.map((column) => {
const value = row[column.id];
****next line showing Error in "{value}"****
return <TableCell key={column.id}>{value}</TableCell>;
})}
<TableCell>
<Button
size="small"
variant="contained"
onClick={() => getDetails(row)}
>
Details
</Button>
</TableCell>
</TableRow>
);
})}
</TableBody>
Run Code Online (Sandbox Code Playgroud)
Abi*_*eer 34
主要问题是Date类型和string类型不兼容。
对象(当然除了 React Elements 之外)作为children.
您正在渲染的列之一 ( created_at) 是类型的Date,不能直接用作 React Child。
您需要以某种方式格式化日期或调用.toString()大括号之间的方法以确保您children不是对象。
{
columns.map((column) => {
const value = row[column.id];
return <TableCell key={column.id}>{value.toString()}</TableCell>;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19591 次 |
| 最近记录: |