I am having an object Structure like this :-
const data = {
"message": "Success",
"responce": [
{
"created_AT": "Wed, 01 Dec 2021 15:39:48 GMT",
"created_BY": "John",
"dateTime": "Wed, 01 Dec 2021 15:39:48 GMT",
"deleted_BY": "",
"flag": 0,
"project_ID": "infobot1234",
"slots": {
"email_org": {
"influence_conversation": false,
"initial_value": null,
"type": "text"
}
},
"slots_ID": "f539ba87-26ee-4287-9037-0ffcf8387593",
"updated_BY": "",
"user_ID": "av1234"
},
{
"created_AT": "Mon, 20 Dec 2021 13:30:27 GMT",
"created_BY": "john",
"dateTime": "Mon, 20 Dec 2021 13:30:27 GMT",
"deleted_BY": "",
"flag": 0,
"project_ID": "infobot1234",
"slots": {
"mobile_number": {
"influence_conversation": false,
"initial_value": null,
"type": "text"
}
},
"slots_ID": "505004fb-f6e5-4eef-81a7-eaf078484d8b",
"updated_BY": "",
"user_ID": "av1234"
},
{
"created_AT": "Mon, 20 Dec 2021 13:36:24 GMT",
"created_BY": "john",
"dateTime": "Mon, 20 Dec 2021 13:36:24 GMT",
"deleted_BY": "",
"flag": 0,
"project_ID": "infobot1234",
"slots": {
"test_mobile_number": {
"influence_conversation": false,
"initial_value": null,
"type": "text"
}
},
"slots_ID": "fb6529f8-8d45-469d-aa17-a53109c86fc1",
"updated_BY": "",
"user_ID": "av1234"
}
],
"status_code": 0
}
Now I want to display the slots key in ant design table, so the expected output is
Slot Name | Created By |
---|---|
email_org | John |
mobile_number | John |
test_mobile_number | John |
But what I am getting is below
Slot Name | Created By |
---|---|
John | |
John | |
John |
The Code, Note the slotData is the data object I am getting which I have mentioned above.
const [dataSource, setDataSource] = useState(slotData)
const columns = [
{
title: "Slot Name",
dataIndex: "slots",
key: "slots_ID",
},
{
title: "Created By",
dataIndex: "created_BY",
key: "created_BY",
},
];
return (
<>
<Card className="csi-project-card-0934">
<Table
bordered
className="ib-table"
dataSource={dataSource.responce}
columns={columns}
pagination={{ pageSize: 6 }}
rowKey={Math.random().toString()}
/>
</Card>
</>
);
};
export default SlotTable;
Please Help Where am I going Wrong ??
CodePudding user response:
Since in your data slots
property is an object, antd
couldn't show it in the table directly, so you can use render
property on your column definition to acheive your goal. like this:
const columns = [
{
title: 'Slot Name',
dataIndex: 'slots',
key: 'slots_ID',
render: item => Object.keys(item)[0],
},
{
title: 'Created By',
dataIndex: 'created_BY',
key: 'created_BY',
},
];
Here is an example by your data and columns definition on stackblitz.