我正在尝试使用对象键来设置MUI数据表中的列名。 我正在尝试使用children.childName的第一个元素设置列名称之一 以便在该列中显示子名称列表,但仅显示第一个子名称。
以我尝试此操作的当前方式,我没有收到任何错误,并且它在表的childName列中什么也不显示。
如何访问数组内的对象?
这是我的数据:
const data = [
{
name: "Pat",
company: "Test Corp",
city: "Yonkers",
state: "NY",
children: [
{ childName: "Pat Jun", childAge: 2 },
{ childName: "Mary Jun", childAge: 2 }
]
},
];
const columns = [
{
name:name: data[0]["children"][0]["childName"],
label: "Child Name",
options: {
filter: true,
sort: true
}
}]
MuiTable.js
function MuiTable({ forms }) {
console.log("cols", columns);
return (
<MUIDataTable
title={"Title"}
data={data}
columns={columns}
options={options}
/>
);
}
通过执行console.log,我可以看到它正在打印值而不是对象键名
非常感谢您的帮助。
答案 0 :(得分:1)
您需要像这样使用customBodyRender
:
import React from "react";
import ReactDOM from "react-dom";
import MUIDataTable from "mui-datatables";
import { Typography } from "@material-ui/core";
import "./styles.css";
function App() {
const data = [
{
name: "Pat",
company: "Test Corp",
city: "Yonkers",
state: "NY",
children: [
{ childName: "Pat Jun", childAge: 2 },
{ childName: "Mary Jun", childAge: 2 }
]
}
];
const columns = [
{
name: "children",
label: "Child Names",
options: {
filter: true,
sort: true,
customBodyRender: (value, tableMeta, updateValue) => (
<Typography>
{value.map(child => child.childName).join(",")}
</Typography>
)
}
}
];
return (
<div>
<MUIDataTable title={"Title"} data={data} columns={columns} />
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
答案 1 :(得分:0)
非常感谢@Klaus的回答。那几乎就是我要做的,但是就我而言,我只想 display 显示对象对象children中的第一个childName,它是对象数组。 因此,我不得不稍作调整,并更改数据结构。
这就是我最终要做的。 首先,我向数据结构中添加了一个简单的数组,该数组完全独立于包含名为childNames的子对象的数组,该子对象仅包含名称。
这使得访问childNames更加容易,因为它只是一个简单的数组,没有嵌套在任何东西中。 所以我只是在表上显示数组中的第一个元素
const columns = [
{
name: "childNames",
label: "Child Name",
options: {
filter: true,
customBodyRender: (value, tableMeta, updateValue) => {
return <div>{value[0]}</div>;
}
}
},
之所以创建仅用于childNames的数组,是因为尝试仅访问包含子对象的数组中的第一个childName被证明非常复杂和困难。
非常感谢您提供的所有帮助。