最近我一直在学习React。我将我的状态设置为对象数组。我希望在页面上以表格形式显示该数组(每个对象占据其中一行)。我一直在研究map方法,但是我有点难以理解它的用法。我在代码的另一个地方使用map方法来映射数组,但是我在映射对象数组时遇到了问题。以下代码位于我渲染的div内部:
<table>
{this.state.orderDetails.map((item =>
<tr key={item}>{item}</tr>
))}
</table>
我遇到了这个错误:'Unhandled Rejection (Error): Objects are not valid as a React child (found: object with keys {OrderID, CustomerID, AddressID, Date, ItemID, BookID, UnitPrice, Quantity}). If you meant to render a collection of children, use an array instead.'(未处理的拒绝(错误):对象不适用作React子元素(找到具有键{OrderID,CustomerID,AddressID,Date,ItemID,BookID,UnitPrice,Quantity}的对象)。如果您想呈现一组子元素,请改用数组。)
订单详细信息已经被正确设置;当我打开我的React工具并检查此组件中的状态时,它被列为一个具有两个元素的数组,每个元素都是一个带有多个元素的对象。如何成功地遍历此对象数组并以表格形式显示它(将每个对象放在自己的行上)?感谢任何想法!事先感谢!
编辑: 在参考答案和评论后,我已更改我的映射如下:
<table>
{this.state.orderDetails.map((item =>
<tr><td key={item.OrderID}>{item.CustomerID}</td></tr>
))}
</table>
错误已经消失。但是,当我点击按钮时,我只收到一个空的小表格单元格。我期望会有多个单元格,因为我的数组有两个对象;当然,我也希望它不是空的。此外,我想显示的不仅仅是客户ID。每个对象中都有几个我想在表格上呈现的元素(例如数量、价格、标题等)。还有其他建议吗?
<tr key={item.id}>{item.name}</tr>
。 - SpiritOfDragonitem
。要访问对象的内容,可以使用item.property
,其中 property 是您想要访问的属性。在您的情况下,我认为应该是类似于<tr key={item.OrderID}>{item.Quantity}</tr>
这样的东西 - 这将打印每一行的数量属性和 OrderID 作为键。 - Akshay<tr key={item.id}><OrderRow order={item} /></tr>
并创建一个名为 Order 的组件:function Order({order})=><><td>{order.name}...其他列</>
- HMR