2

我有要使用 MUI-Data-Table 组件在数据表中显示的文本列表,但我面临的问题是在列中显示的不是单个项目而是项目列表。我有一个名为系统的项目。它包含一系列国家/地区,因此我只想在一个列中显示该数组,但我不知道该怎么做。

这是我的 json :

systeme:{
          archived: 0
           id: 1
           nomSysteme: "Environnement Tn"
           systeme_country: Array(1)
                   {
                    0: {id: 1}
                   length: 1
                     }
        }

这就是我自定义专栏的方式,因为我需要遵循某种模式:

 {
    name: "titre",
    label: "Titre",
    options: {
        filter: true,
        sort: false,
    }
},
{

    name: "theme.systeme.systeme_country",
    label: "Countries",
    options: {
        filter: true,
        sort: false,

    }
},

如需更多解释,选项名称必须与 json 中的名称相同,并且它只呈现一个对象,但 theme.systeme.system_country 是我想要显示的一组国家/地区的 ID,但它不会让我不知道如何自定义我的列来做这样的事情,或者我可以做些什么来实现它

4

2 回答 2

5

您可以为customBodyRender指定的字段提供一个。可以在这里找到一个例子:https ://github.com/gregnb/mui-datatables/blob/master/examples/component/index.js

import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
import MUIDataTable from "mui-datatables";

function App() {
  const data = [{ user: "john", langs: ["en", "de", "fr"] }];
  const columns = [
    { name: "user" },
    {
      name: "langs",
      options: {
        customBodyRender: (value, tableMeta, updateValue) => (
          <div>{value.join(",")}</div>
        )
      }
    }
  ];
  return <MUIDataTable data={data} columns={columns} />;
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
于 2019-10-27T18:04:52.117 回答
0

此外,您可以只返回您想要的字符串(不需要在 div 中)

  const colData = (colArrayData: any) => {
        return colArrayData.map((item: any) => item.name).join(", ")
  }


  const columns = [
    { name: "user" },
    {
      name: "langs",
      options: { customBodyRender: (colArrayData: any) => colData(colArrayData) },
    }
  ];
于 2020-09-22T08:42:29.577 回答