如何在反应中显示表格中的对象数组

2023-12-04

最近在学习react。我将状态设置为对象数组。我想在页面上的表格中显示该数组(每个对象在一行上)。我一直在研究地图,但是我在理解它时遇到了一些困难。我能够在代码中的不同位置很好地使用映射来映射array,但我在通过映射时遇到问题对象数组。此代码发生在我的渲染内的 div 中:

<table>
  {this.state.orderDetails.map((item =>
  <tr key={item}>{item}</tr>
  ))}
</table>

我收到此错误:“未处理的拒绝(错误):对象作为 React 子项无效(找到:带有键 {OrderID、CustomerID、AddressID、Date、ItemID、BookID、UnitPrice、Quantity} 的对象)”。如果您打算渲染子集合,请改用数组。

订单详细信息肯定已正确设置;当我打开反应工具并检查该组件中的状态时,它被列为一个包含两个元素的数组,每个元素都是一个包含多个元素的对象。如何成功地映射这个对象数组并以表格形式显示它(每个对象都在自己的行上)?感谢您提供任何想法!

EDIT在听取了答案和评论的一些建议后,我将地图更改为以下内容:

<table>
  {this.state.orderDetails.map((item =>
  <tr><td key={item.OrderID}>{item.CustomerID}</td></tr>
  ))}
</table>

错误已经消失。但是,当我单击该按钮时,我会看到一个空的小表格单元格。我期望有多个单元格,因为我的数组有两个对象,当然我期望它不为空。另外,我想要显示的不仅仅是 customerID。我想要在表格上呈现的每个对象中有几个元素(例如数量、价格、标题等)。还有其他建议吗?


我们不知道你的对象数组是什么样的,所以我们必须猜测:

所以我猜这个输入:

const initState = [
    { id: 1, name: "bread", quantitiy: 50 },
    { id: 2, name: "milk", quantitiy: 20 },
    { id: 3, name: "water", quantitiy: 10 }
  ];

我得到这个输出:

enter image description here

它是完全灵活的,所以如果我们有输入:

const initState = [
    { id: 1, name: "bread", quantitiy: 50, location: "cupboard" },
    { id: 2, name: "milk", quantitiy: 20, location: "fridge" },
    { id: 3, name: "water", quantitiy: 10, location: "fridge" }
  ];

然后我们得到这个输出:

enter image description here

最重要的是映射映射到状态数组的映射内的对象值:

{state.map((item) => (
        <tr key={item.id}>
          {Object.values(item).map((val) => (
            <td>{val}</td>
          ))}
        </tr>
      ))}

下面和 codePen 上的完整演示:https://codepen.io/Alexander9111/pen/zYvEbML

我使用了一个功能组件,但它与基于类的组件非常相似。

注意:您还可以创建一个行组件,然后通过状态数组在地图内调用该组件。在此行组件内,您将像我一样映射对象键并输出表数据元素。这是组件死亡(即将所有内容分解为彼此嵌套的越来越小的组件)和过于复杂的更少组件之间的平衡。

function MyTable() {
  const initState = [
    { id: 1, name: "bread", quantitiy: 50, location: "cupboard" },
    { id: 2, name: "milk", quantitiy: 20, location: "fridge" },
    { id: 3, name: "water", quantitiy: 10, location: "fridge" }
  ];
  const [state, setState] = React.useState(initState);

  return (
    <table>
      <tr key={"header"}>
        {Object.keys(state[0]).map((key) => (
          <th>{key}</th>
        ))}
      </tr>
      {state.map((item) => (
        <tr key={item.id}>
          {Object.values(item).map((val) => (
            <td>{val}</td>
          ))}
        </tr>
      ))}
    </table>
  );
}

ReactDOM.render(<MyTable />, document.getElementById("target"));
th,
td {
  border: 1px solid black;
  margin: 0px 0px;
  padding: 5px 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<div id="target"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在反应中显示表格中的对象数组 的相关文章

  • 在 Node.js 中实现服务器发送事件的简单方法?

    我环顾四周 似乎在 Node js 中实现 SSE 的所有方法都是通过更复杂的代码 但似乎应该有一种更简单的方法来发送和接收 SSE 是否有任何 API 或模块可以让这件事变得更简单 这是一个每秒发送一个服务器发送事件 SSE 的 Expr
  • Google javascript 登录 api:无法离线访问

    我正在尝试为服务器端应用程序实现 Google 登录 如 Google 文档中所示 服务器端应用程序的 Google 登录 https developers google com identity sign in web server si
  • 匹配 JavaScript RegEx 中的不可见字符

    我有一些包含不可见字符的字符串 但它们位于可预测的位置 通常 围绕我想要提取的文本片段 然后在第二次出现之后我想保留文本的其余部分 我似乎不知道如何关闭隐形字符 and将它们从我的结果中排除 为了匹配隐形 我一直在使用这个正则表达式 xA0
  • 如何设置黄瓜环境变量

    我有以下 package json name newcucumber version 1 0 0 main index js scripts test node modules bin cucumber js firefox node mo
  • 传单圆圈绘制/编辑问题

    我第一次制作传单 并面临绘制圆圈和编辑 更改圆圈位置 的问题 我面临的问题是 编辑 移动 圆从一个位置到另一位置会改变其半径 Note 请尝试在给定的小提琴中在地图顶部创建圆圈 然后通过单击编辑按钮将其移动到底部 如果我在地图的顶部创建圆圈
  • 如何在没有数据库的情况下创建AJAX分页?

    是否可以在没有 MySQL 帮助的情况下获取 AJAX 分页页面 难道我不能只添加一个包含我需要显示的文本和标记的 PHP 文件 然后通过单击页码将该内容提供给用户吗 那么可以用纯 jQuery 和 PHP 来实现吗 您会使用什么代码方法来
  • 如何使用 QuerySelector 获得第二个匹配项?

    以下语句给出了该类的第一个元素titanic element document querySelector titanic 我如何检索具有相同类的第二个元素 Use document querySelectorAll https devel
  • Ember:命名出口错误

    我不知道为什么我的模板没有在指定的插座中呈现 这是我第一次尝试学习 ember 我被困在指定的渠道上 我想渲染侧边栏模板 in the outlet sidebar 和内容模板 in the outlet content 但我不断在控制台中
  • C 中指向常量字符串的指针

    char p string creates pointer to constant string char p string just an array with string 我只是有点困惑为什么它在第一个示例中创建一个指向常量字符串的指
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • Puppeteer 无法在 VPS (DigitalOcean) 上工作

    我在水滴中数字海洋 https www digitalocean com 我收到这个错误 node 5549 UnhandledPromiseRejectionWarning TimeoutError Navigation Timeout
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2
  • Nuxt + Vuex - 如何将 Vuex 模块分解为单独的文件?

    在 Nuxt 文档中 here https nuxtjs org guide vuex store module files 它说 您可以选择将模块文件分解为单独的文件 state js actions js mutations js an
  • 保存和恢复陷阱状态?管理多个陷阱处理程序的简单方法?

    有什么好的方法可以覆盖bash陷阱处理程序不会永久破坏可能已设置或尚未设置的现有处理程序 动态管理任意陷阱例程链怎么样 有没有办法保存陷阱处理程序的当前状态 以便以后可以恢复 在 Bash 中保存和恢复陷阱处理程序状态 我将提交以下堆栈实现
  • 在 PHP 中创建关联数组

    我有一个多维数组 shop array array appn1 pub1 pub2 pub3 array appn2 pub1 array appn3 pub1 pub2 每个数组中的第一项是申请编号每个数组中的其余部分是出版号 我得到每个
  • 使用 Lodash 循环 JavaScript 对象中的属性

    是否可以循环访问 JavaScript 对象中的属性 例如 我有一个 JavaScript 对象定义如下 myObject options property1 value 1 property2 value 2 属性将动态添加到该对象 有没
  • 我应该采取什么圆角方法?

    因此 关于圆角的信息并不缺乏 我已经经历过其中的大部分 我发帖是为了征求社区对这一点的意见 我的场景是 我们正在开发一个圆角相关设计 主要用于交互
  • 为什么 JavaScript 默认导出不可用?

    为什么默认导出不像命名导出那样实时 lib js export let counter 0 export function incCounter counter export default counter main1 js import
  • angularjs 将 ngModel 从包装器指令传递到包装器指令

    我是 Angular 的新手 但仍然痛苦地纠结于自定义指令 我想重用这段 HTML
  • 如何将 c_uint 的 ctypes 数组转换为 numpy 数组

    我有以下 ctypes 数组 data ctypes c uint 100 我想创建一个 numpy 数组np data包含来自 ctypes 数组数据的整数值 ctypes 数组显然稍后会填充值 我看到numpy中有一个ctypes接口

随机推荐

  • 如何通过 iframe 嵌入调整大小的网站? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要将一个网站嵌入到另一个网站中 我认为是通过 iframe 我想以以下分辨率嵌入此网站 200 x 150 像素 我怎样才能做到这一点 以防万一有人在这里闲逛 解决方案在http
  • 带引号的公式中的预期语句结束[重复]

    这个问题在这里已经有答案了 Sub FillNames Range D2 D56 SpecialCells xlCellTypeBlanks Formula IF AND C gt 800 C lt 900 YES NO End Sub 我
  • php 是否可以在没有提交按钮的情况下提交复选框表单?

    我是一名 php 新手 我正在尝试为我的电子商务网站项目创建一个价格范围系统 所以我做了一个复选框表单
  • 环回错误:需要授权

    我有一个带有 mongoDB 的环回应用程序 如下所示 当我以管理员身份登录时 我无法在菜肴上使用 post 方法 我收到需要授权的错误 只有当我将菜肴角色更改为允许所有人时 这才成为可能 我怎样才能通过让每个人都拒绝并只允许某些用户执行某
  • 我需要帮助创建实例变量和构造函数[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 抱歉 我知道这个答案很明显 但我想我只是太慢了 谁能给我实例变量和构造函数的明确定义 实
  • 如何使 WPF ListView 项目水平重复,就像水平滚动条一样?

    我有一个 WPF ListView 它垂直重复数据 我不知道如何让它水平重复 就像 Windows 资源管理器中的幻灯片视图一样 我当前的 ListView 定义是
  • Jaspersoft Studio 在更改报告的数据适配器时添加 uuid

    我目前正在从报表4 5 1 to 贾斯珀软件工作室 5 5 我注意到当我更改数据适配器时贾斯帕软件工作室它添加了uuid标记到报告的 XML 我与不同的数据库有不同的连接 但我讨厌必须进入 Notepad 来删除uuid 从 XML 中 当
  • 在android imageview中使用glide显示google驱动器图像

    我的驱动器网址是 https drive google com file d 0B3DFHb2 MdGYa2NMUkVtVkZ1V1k view usp sharing 我想使用 glide 在 android imageview 中显示它
  • iOS 和 Xcode:在 UITableView 中设置委托和数据源时出现不兼容类型错误

    我正在尝试以编程方式制作一个应用程序 其中包含一个 UITableView 它根据应用程序的文档目录中的文件创建项目列表 我已经能够将文件读入数组 filepathsArray 但是当我尝试使用数组填充表格时 编译崩溃并且 Xcode 抛出
  • BitmapFactory.decodeStream 无法从 ftp 解码 png 类型

    我的错误是什么 如何显示来自 FTP 的 png 我是 android 新手 尝试显示来自不同连接 源的图像 然后我已经显示了从可绘制和 HTTP 加载的图像 现在 我尝试从 FTP 显示 当我使用时 我收到消息 解码器 gt 解码返回 f
  • MySQL 理解基本连接

    我正在努力理解基本的 MySQL 连接 基本上我有 2 个表 其中一个包含客户的名字和地址 ID 另一个包含实际地址 我希望它不只是显示客户名称和地址 ID 而是显示客户名称和实际地址 我的基本选择语句是这样的 SELECT firstNa
  • 使用 Retrofit 获得通用 URL 的任何方法

    我有几个接受相同 GET 参数的 URL 主要用于分页目的 如下所示 public interface AsynchronousApi GET api users public void listUsers Query limit Inte
  • 从jquery处理android中的后退按钮

    我们用 jQuery 开发了一个与 android 集成的应用程序 只有一个 Activity 从这个活动中 我们加载一个 HTML 文件 在这个文件上我们显示和隐藏 div 内容 查看此处提供的网页并按 android 中提供的后退按钮时
  • 在 FullCalendar 中显示周数

    我正在寻找一种在议程周视图上显示周数的方法 我试过了这个方法但没有结果 实际上 我需要像这样将数字放在日历标题中 titleFormat month Calendar br MMMM yyyy week Calendar br Week W
  • log_softmax() 如何实现以更快的速度和数值稳定性计算其值(和梯度)?

    MXNet 和 PyTorch 都提供了计算 log 的特殊实现 softmax 速度更快 数值更稳定 但是 我在这两个包中都找不到该函数 log softmax 的实际 Python 实现 谁能解释一下这是如何实现的 或者更好的是 给我指
  • 快速行插入 UITableView 会导致 NSInternalInconsistencyException

    我有一个 UITableView 有时会快速插入新行 新行的插入由通知观察者处理 该通知观察者监听每当基础数据发生更改时触发的更新通知 我在所有数据模型更改和实际通知发布本身周围使用 synchronized 块 希望每个增量数据更改 和行
  • 遍历已填充的行

    因此 我尝试使用 VBA 迭代 Excel 电子表格中的工作表 我想遍历每一行 然后遍历每一列 尽管进行了谷歌搜索 但我实际上无法找到一种直观的方法来做到这一点 我假设必须填充一行的第一个单元格 如果没有 那么那一定是结束 我可以强制执行这
  • 为什么我们必须在 C# 中同时定义 == 和 !=?

    C 编译器要求每当自定义类型定义运算符时 它还必须定义 see here Why 我很好奇为什么设计者认为有必要 以及为什么编译器不能在只有另一个运算符存在时默认为其中一个运算符提供合理的实现 例如 Lua 允许您仅定义相等运算符 而您可以
  • Javascript 正则表达式和边界

    一位同事问我一个正则表达式问题 我似乎无法找到并回答他 我们使用边界在文本编辑器中突出显示特定长度的文本 但这里有一些示例代码显示了该问题 问题是 第一个文字 str replace 有效
  • 如何在反应中显示表格中的对象数组

    最近在学习react 我将状态设置为对象数组 我想在页面上的表格中显示该数组 每个对象在一行上 我一直在研究地图 但是我在理解它时遇到了一些困难 我能够在代码中的不同位置很好地使用映射来映射array 但我在通过映射时遇到问题对象数组 此代