当前位置: 首页 > 知识库问答 >
问题:

如何使用react.js动态生成表行

蒋默
2023-03-14

目前,我正在生成表头和行,但我希望使行更具动态性。如何在不重复一次的情况下打印行的数据?我怎样才能像标题一样使用1语句呢?所以基本上我只需要调用{row},它应该生成该行包含的所有内容,而不必键入{row.school}等等。。。

const schoolData = [
 { school : 'Middle School', year : '2017', date : '6/12/17', location : 
'Class',},
{ school : 'High School', year : '2017', date : '2/24/17', location : 
'Gym',},

];


export default class Table extends Component {

render() {
const headers = Object.keys(schoolData[0]).map(header => 
<TableHeaderColumn>{header}</TableHeaderColumn>);

return (
  <Tabs>
<Tab label="School Type">
<Table>
  <TableHeader>
    <TableRow>
      {header}
    </TableRow>
  </TableHeader>
  <TableBody>
    {schoolData.map( (row) => (
      <TableRow>
        <TableRowColumn>{row.school}</TableRowColumn>
        <TableRowColumn>{row.year}</TableRowColumn>
        <TableRowColumn>{row.date}</TableRowColumn>
        <TableRowColumn>{row.location}</TableRowColumn>
      </TableRow>
      ))}
  </TableBody>
</Table>

共有2个答案

有骏祥
2023-03-14

我不会这样使用Object.keysObject.keys的输出是任意排序的,不能保证在具有相同形状的对象之间保持一致:

Object.keys({foo: 'foo', bar: 'bar', baz: 'baz'})
// -> ["foo", "bar", "baz"]
Object.keys({bar: 'bar', baz: 'baz', foo: 'foo'})
// -> ["bar", "baz", "foo"]
Object.keys({ baz: 'baz', bar: 'bar', foo: 'foo'})
// -> ["baz", "bar", "foo"]

解决这个问题有很多方法。一种方法是将多维数组传递给组件:

[
    ['header1', 'header2', 'header3', 'header 4'],
    ['row 1 cell 1', 'row 1 cell 2', 'row 1 cell 3', 'row 1 cell 4'],
    [...],
]
刘博文
2023-03-14

您可以使用Object.values(obj),它接收一个对象并返回该对象中每个键:值的每个值的数组。

所以你可以这样做:

{schoolData.map(row => (
  <TableRow>
    {Object.values(row).map(rowValue => 
      <TableRowColumn>{rowValue}</TableRowColumn>
    )}
  </TableRow>
))}

您总是可以在映射之前对由Object.values(row)返回的数组进行排序。但无论如何,我认为顺序是相当一致的。或者您可以将您的row对象解析成一个按您想要的方式排序的数组,然后执行sortedRow.map(...)

但是我们开始得到的不仅仅是一行代码,不是吗?你的方法写起来更快,读起来更简单,但是这样做以后更容易维护,最适合你的就是你要走的路。

 类似资料:
  • 本文向大家介绍使用Vue生成动态表单,包括了使用Vue生成动态表单的使用技巧和注意事项,需要的朋友参考一下 开需求会了,产品说这次需求的表单比较多,目前有18个,后期的表单可能会有增加、修改。我作为这次的前端开发,看到这样的需求,心里知道要这样搞不得把自己累死,首先表单居多,还会有变更,以后维护起来也让人心力憔悴。 于是我提议做动态表单,做一个表单的配置系统,在系统里配置表单类型、表单得字段、以及

  • 我想用jQuery开发一个动态表单生成器,用户可以在其中构建自己的表单并更改表单名称、输入类型、大小等。我知道有一些很酷的拖放在线表单生成器,但我想开发一个非常简单的表单生成器。 我已经开始发展这一点,我面临着一些问题。 当用户单击标签(输入字段)时,它会使用jquery和edit and delete按钮动态创建一个输入字段。 下面的代码在div中附加输入字段,该字段现在是空的。 点击文本输入,

  • 本文向大家介绍如何使用Jquery动态生成二级选项列表,包括了如何使用Jquery动态生成二级选项列表的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用Jquery动态生成二级选项列表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 想写一个多级联动的选项列表,并且我想要动态生成,但是我看了好多博客看得我晕乎乎的,就自己查了一些j

  • 我必须在运行时动态生成一个xml文件。请帮助我使用PHP动态生成下面的XML文件。 null

  • 问题内容: 我有以下问题。我的表格()结构如下: 存储不同表的名称,并在这些表中存储ID。我想做的是检查上述表中的行是否存储了对其他表的有效引用。因此,我需要从外部表中选择一行,其名称基于存储在中的字符串。我的代码不起作用,因为它存在语法错误,但清楚地显示了我想要实现的目标: 问题答案: 如果知道所有可能的表名,则可以使用条件语法来实现它:

  • 问题内容: 我正在尝试在MySQL中生成序列表,以便可以从获得唯一ID 。 问题是我需要动态地多个序列。 首先,我创建了一个表: 然后尝试使用http://dev.mysql.com/doc/refman/5.0/en/information- functions.html#function_last-insert- id中的 示例获取编号 一段时间后,我意识到我还需要安全地为新标签生成行。因此,