具有mui-datatables的对象数组

len*_*yai 5 javascript mui reactjs

对于使用mui-datatables的人的问题。它可以将数据作为字符串数组来使用,但是由于以下错误而无法加载对象数组:bundle.js:126379未捕获(承诺)TypeError:e.map不是函数

import MUIDataTable from "mui-datatables";

class App extends React.Component {

render() {

const columns = ["Name", "Title", "Location", "Age", "Salary"];

const data = [
  {name: "Gabby George", title: "Business Analyst", location: "Minneapolis", age: 30, salary: "$100,000"}      
];

const options = {
  filterType: 'dropdown',
  responsive: 'stacked'
};

return (
  <MUIDataTable 
    title={"ACME Employee list"} 
    data={data} 
    columns={columns} 
    options={options} 
  />
);

//return <div>a</div>;

  }

}

ReactDOM.render(<App />, document.getElementById("root"));
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

小智 7

对于它的价值,我基本上已经将我的对象数组映射到内联的简单值数组中,如下所示:

const docs = [{"name": "Doc 1", "type": "PDF"}, {"name": "Doc 2", "type": "JPG"}];

<MUIDataTable
    title="Documents"
    data={docs.map(item => {
        return [
            item.name,
            item.type,
        ]
    })}
    columns={Object.keys(docs)}
/>
Run Code Online (Sandbox Code Playgroud)

您可以将其集成到某种包装器组件中,但在一次性情况下添加它非常简单。

注意:如果数据数组为空,MUI 数据表将不会呈现,因此我经常手动添加我的列并在映射之前检查数据的长度,否则返回一个像 [[" "]] 这样的数组。这至少会导致呈现一个空白表格。


Ace*_*Ace 5

mui-datatables 确实支持对象数组。为了使用对象数组,必须在列数组中指定对象属性,如下所示:

const columns = [
  { label: "Name", name: "name" },
  { label: "Title", name: "title" }, 
  { label: "Location", name: "location" }, 
  { label: "Age", name: "age" }, 
  { label: "Salary", name: "salary" }
];

const data = [
  {name: "Gabby George", title: "Business Analyst", location: "Minneapolis", age: 30, salary: "$100,000"}      
];

const options = {
  filterType: 'dropdown',
  responsive: 'stacked'
};

return (
  <MUIDataTable 
    title={"ACME Employee list"} 
    data={data} 
    columns={columns} 
    options={options} 
  />
);
Run Code Online (Sandbox Code Playgroud)