材质UI默认表排序

时间:2020-01-15 12:59:38

标签: reactjs material-ui

我有一个显示一些数据的材料UI表。我希望能够根据平均值从最低到最高对表格进行排序。默认情况下有办法吗?就像在浏览器中加载表格时一样。那是我的桌子和一些数据。我希望显示的平均列从最低到最高排序。因此,平均自上而下最低的人

const data = [
    {
      Name: "A Person",
      Attendence: [
        {
          date: "2019/12/01",
          attendence: 1
        },
        {
          date: "2019/12/02",
          attendence: 1
        },
        {
          date: "2019/12/03",
          attendence: 0
        },
        {
            date: "2019/12/04",
            attendence: 0
          },
          {
            date: "2019/12/05",
            attendence: 0.25
          },
          {
            date: "2019/12/06",
            attendence: 0.75
          },
          {
            date: "2019/12/07",
            attendence: 0.25
          },
          {
            date: "2019/12/08",
            attendence: 0.25
          },
          {
            date: "2019/12/09",
            attendence: 0
          },
          {
            date: "2019/12/10",
            attendence: 0
          },

      ],
]








function Register(props) {
  const classes = useStyles();


  const data = props.attendence.map(attendence => (
    attendence.average
  ))



  // const classes = useStyles();
  return (
    <React.Fragment>
         <Paper >
      <Table aria-label="simple table">
        <TableHead>
          <TableRow>
            <TableCell>Name</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right">Date</TableCell>
            <TableCell align="right"> Average </TableCell>
          </TableRow>
        </TableHead>
        <TableBody>
          {props.attendence.map(attendence => (
            <TableRow key={attendence.Name}>
              <TableCell component="th" scope="row">
                {attendence.Name}
              </TableCell>
              {attendence.Attendence.map(personAttendence => {
                  return (
                    <TableCell align="right">{personAttendence.attendence}</TableCell>
              )
            })}
               <TableCell align="right" >{attendence.average}</TableCell>
            </TableRow>
          ))}
        </TableBody>
      </Table>
    </Paper>           
        </React.Fragment>
  );
            }

2 个答案:

答案 0 :(得分:3)

是的!最简单的方法是将sort your data传送到您的组件之前:

const data = [{ average: 3 }, {average: 8}, {average: 2}];
const sortedData = data.sort((a, b) => a.average - b.average);

请注意,Material UI表没有任何内置排序功能,因为它们不为您存储状态。您可以使用Material UI中提供的组件添加排序。有关如何执行此操作的a good example in the docs

希望有帮助!

答案 1 :(得分:0)

根据文档,

<块引用>

可以使用 GridColDef 接口的 sortModel 属性预先配置已排序的列:

就我而言,我有列名称电子邮件,需要在表加载时对其进行排序。 下面是代码 <DataGrid rows={rows} columns={columns} pageSize={5} sortModel={[{ field: 'emails', sort: 'asc' }]} />

检查文档

https://material-ui.com/components/data-grid/sorting/#data-grid-sorting