reactjs - 如何使用处理关键属性的 React 显示组件集合?
问题描述
我想显示一组日志数组:
export interface IResult {
succeeded: boolean;
logs: IServerLogs;
}
export interface IServerLogs {
step1: ILog[],
step2: ILog[],
step3: ILog[]
}
export interface ILog {
id: number;
date: Date;
msg: string;
severity: number;
obj?: any;
}
我在 App.tsx 中有一组 IResult
render() {
return (
{this.state.results.map((result, index) => (
<Results key={index} results={result} index={index + 1} />
))}
)
}
在 results.tsx 中:
render() {
const { step1, step2, step3 } = this.props.results.logs;
const { index } = this.props;
return (
<div>
<div>
#{index} Status: {this.props.results.ret ? "SUCCEEDED" : "FAILED"}
<FontAwesomeIcon icon={faWindowClose} />
</div>
<Accordion>
{ step1.length > 0 && <Result logs={step1} title="Step 1" /> }
{ step2.length> 0 && <Result logs={step2} title="Step 2" /> }
{ step3.length > 0 && <Result logs={step3} title="Step 3" /> }
</Accordion>
</div>
)
}
在 result.tsx 中:
render() {
const { logs, title } = this.props;
return (
<AccordionItem>
<AccordionItemTitle><b>{title}</b></AccordionItemTitle>
<AccordionItemBody>
<Table striped bordered hover size="sm">
<thead>
<tr>
<th>Date</th>
<th>Message</th>
<th>Obj</th>
</tr>
</thead>
<tbody>
{
logs.map((log, index) =>
(
<tr key={log.id} style={{ color: log.severity == 0 ? "green": "red"}}>
<td key={index+1+log.id}>{moment(log.date).format("HH:mm:ss")}</td>
<td key={index+2+log.id}>{log.msg}</td>
<td key={index+3+log.id}>{log.obj}</td>
</tr>
))
}
</tbody>
</Table>
</AccordionItemBody>
</AccordionItem>
);
}
有了所有这些东西,我得到以下错误:
Uncaught (in promise) Error: Objects are not valid as a React child (found: object with keys {}). If you meant to render a collection of children, use an array instead.
in td (created by Result)
in tr (created by Result)
in tbody (created by Result)
in table (created by Table)
我尝试在这里和那里设置和删除键,但我总是在 TR 或 TD 上收到相同的错误消息......
我究竟做错了什么?
预先感谢您的帮助!
解决方案
我懂了
export interface ILog {
id: number;
date: Date;
msg: string;
severity: number;
obj?: any;
}
具有任何 obj 类型。所以如果 ILog.obj 是一个对象,它就不能被渲染。因此,您可能需要添加一个检查,如果它的对象呈现对象的属性,则其他明智的呈现 obj。
推荐阅读
- c# - Windows 内置的最小拖动距离参数是否按 DPI 缩放?
- python - Python - 字符串到列表转换函数
- hibernate - 如何在 ORM 中映射@OneToMany
- node.js - 在我导入 docusign-esign 模块时反应应用程序抛出错误
- tfs - 从备份中恢复 tfs - 附加集合的问题
- python - 脚本在写入 csv 文件时会产生一些难以理解的文本
- web - 试图用鹈鹕来改变我的主题,但没有真正奏效
- r - 子集面板观察
- ios - Base64 字符串对于同一个文件是不同的
- python - 针对 SQL Server 的 Apache Airflow kerberos 身份验证(在 Windows 上)