reactjs - React 错误:添加到 DOM 节点时,对象作为 React 子节点无效
问题描述
它在输出到控制台时以正确的格式输出数据。但是在添加到 DOM 时,它给出了以下错误,错误:对象作为 React 子项无效(找到:带有键 {street、suite、city、zipcode、geo} 的对象)。如果您打算渲染一组子项,请改用数组。
import React from "react";
export default class Fetch extends React.Component {
constructor() {
super();
this.state = { dataList: [] };
}
async componentDidMount() {
let data = await fetch("https://jsonplaceholder.typicode.com/users");
if (data.ok) {
var fetchedData = await data.json();
this.setState({ dataList: fetchedData });
} else console.log("Error");
}
render() {
return (
<table>
{this.state.dataList.map((item) => {
return (
<tr key={item.id}>
<td>{item.id}</td>
<td>{item.name}</td>
<td>{item.username}</td>
<td>{item.email}</td>
<td>{item.address}</td>
</tr>
);
})}
</table>
);
}
}
解决方案
问题出在这条线上<td>{item.address}</td>
,它item.address
是一个带有更深键值对的 JSON。
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
}
这里的一个解决方案可以是使用它进行字符串化{JSON.stringify(item.address)}
并打印它,完成这项工作,但它会很丑陋,手动使用每个键是可以接受的。
推荐阅读
- google-apps-script - Google Apps 脚本 If 或语句
- intel - 如何从英特尔 SGX Enclave 获取报价
- javascript - 在内容脚本中获取当前选项卡 ID 的方法 - chrome 扩展
- reactjs - 当路由在 React.js 中有参数时刷新页面
- sql - Postgres | 带有 OR 条件的 IF 语句
- mysql - 在使用 MySQL 的最近文章中随机选择“精选”文章,如果不存在则回退
- python - python findall() 返回空列表
- java - 当接口作为参数给出时,依赖注入不起作用
- graph-databases - ArangoDB 为双向边的每个有向边创建计数器边
- cmake - CMake 错误(配置)