【问题标题】:array of rows to table react js / javascript表的行数组反应js / javascript
【发布时间】:2021-12-27 13:48:17
【问题描述】:

有没有一种方法可以轻松地将行数组映射到 react js / javascript 中的表?我的数据如下所示:

    rows: [['10kg', '12.5', '1.25', '8'], 
['25kg', '28.75', '1.15', '6'], 
['50kg', '50', '1.0', '5'], 
['100kg', '100', '1.0', '3'], 
['250kg', '250', '1.0', '5'], 
['500kg', '500', '1.0', '5'], 
['1liter', '1000', '1.0', '5']]

"labels": [
        "Weight",
        "Price",
        "Price Per",
        "Amount"

      ],

在 python 中有一些表格,我可以在其中设置列,然后循环遍历数组并通过数组项添加行。 javascript / reactjs有类似的东西吗?

【问题讨论】:

  • 你想用那个创建一个表吗?你使用像 ant-design 之类的组件库吗?
  • 要输出html表格吗?如果是这样,答案是“是”。这确实是你可以用 reactjs 或普通 javascript 做的事情。
  • @azro 是的,现在我正在使用材质 ui

标签: javascript arrays reactjs


【解决方案1】:

将数据作为列表更改为对象:

let rows = [['10kg', '12.5', '1.25', '8'], 
  ['25kg', '28.75', '1.15', '6'], 
  ['50kg', '50', '1.0', '5'], 
  ['100kg', '100', '1.0', '3'], 
  ['250kg', '250', '1.0', '5'], 
  ['500kg', '500', '1.0', '5'], 
  ['1liter', '1000', '1.0', '5']];

let labels = ["Weight","Price","Price Per","Amount"];

let values = rows.map((row, idx) => {
  let d = {id: idx};
  row.forEach((c, i) => d[labels[i]] = c);
  return d;
});

console.log(values)

let columns = labels.map(l => ({field: l, width: 150}));

console.log(columns);

然后用DataGrid渲染

return <DataGrid rows={values} columns={columns}/>

【讨论】:

  • 谢谢!
  • 有没有办法在上面完成的映射中自动创建一个ID?我似乎遇到了一个问题,即 MaterialUI/数据网格要求每一行都有一个唯一的 ID。这是我在程序中遇到的错误:错误:MUI:数据网格组件要求所有行都具有唯一的 id 属性。在 rows 属性中提供了没有 id 的行:{"Weight":"20 kg","Price":"69.99","Price Per":"3.499"}
  • @BRICKMANE 看看我对值构造的编辑,应该足够了
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2019-08-27
  • 2021-08-10
  • 2020-01-03
  • 2018-12-17
相关资源
最近更新 更多