Как правильно отобразить таблицу, когда TableHead и TableBody находятся в двух разных разделах? - PullRequest
0 голосов
/ 07 февраля 2020

Я должен сделать таблицу с tableHead и tableBody находятся в другом разделе. Я хочу, чтобы они имели одинаковую ширину с каждым столбцом. Могу я это сделать?

<Table container aria-label="simple table">
  <TableHead>
    <TableRow>
      <TableCell>
        <span className={classes.headerTableText}>
        ID
        </span>
      </TableCell>
      <TableCell align="center">
        <span className={classes.headerTableText}> Name </span>
      </TableCell>
      <TableCell> Name</TableCell>
    </TableRow>
  </TableHead>
</Table>
<Table>
  <TableBody>
    <TableRow hover>
      <TableCell>
        <span>1</span>
      </TableCell>
      <TableCell align="center">
        <span>Me</span>
      </TableCell>
      <TableCell align="right">
        <span>U</span>
      </TableCell>
    </TableRow>
  </TableBody>
</Table>

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Для таблиц Material-UI следует изменять отступы справа и слева от каждой ячейки таблицы

import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Table from '@material-ui/core/Table';
import TableBody from '@material-ui/core/TableBody';
import TableCell from '@material-ui/core/TableCell';
import TableHead from '@material-ui/core/TableHead';
import TableRow from '@material-ui/core/TableRow';
import Paper from '@material-ui/core/Paper';

const styles = theme => ({
  root: {
    display: 'flex',
    marginTop: theme.spacing.unit * 3,
    overflowX: 'hide',
  },
  table: {
    minWidth: 340,
  },
  tableCell: {
    paddingRight: 4,
    paddingLeft: 5
  }
});

let id = 0;
function createData(name, calories, fat, carbs, protein) {
  id += 1;
  return { id, name, calories, fat, carbs, protein };
}

const data = [
  createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
  createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
  createData('Eclair', 262, 16.0, 24, 6.0),
  createData('Cupcake', 305, 3.7, 67, 4.3),
  createData('Gingerbread', 356, 16.0, 49, 3.9),
];

function SimpleTable(props) {
  const { classes } = props;

  return (
    <Paper className={classes.root}>
      <Table className={classes.table}>
        <TableHead>
          <TableRow>
            <TableCell className={classes.tableCell}>Dessert (100g serving)</TableCell>
            <TableCell numeric className={classes.tableCell}>Calories</TableCell>
            <TableCell numeric className={classes.tableCell}>Fat (g)</TableCell>
            <TableCell numeric className={classes.tableCell}>Carbs (g)</TableCell>
            <TableCell numeric className={classes.tableCell}>Protein (g)</TableCell>
          </TableRow>
        </TableHead>
        <TableBody>
          {data.map(n => {
            return (
              <TableRow key={n.id}>
                <TableCell component="th" scope="row" className={classes.TableCell}>
                  {n.name}
                </TableCell>
                <TableCell numeric className={classes.tableCell}>{n.calories}</TableCell>
                <TableCell numeric className={classes.tableCell}>{n.fat}</TableCell>
                <TableCell numeric className={classes.tableCell}>{n.carbs}</TableCell>
                <TableCell numeric className={classes.tableCell}>{n.protein}</TableCell>
              </TableRow>
            );
          })}
        </TableBody>
      </Table>
    </Paper>
  );
}

SimpleTable.propTypes = {
  classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(SimpleTable);

Чтобы сделать его отзывчивым, вам необходимо использовать Grid-систему, в первую очередь, например, это грид-система для полной страницы:

1 голос
/ 07 февраля 2020

Вы можете вычислить ширину одного из столбцов таблицы, а затем отправить это значение ширины другому в качестве подпорки.

Вы также можете использовать ловушки для управления шириной столбцов и синхронизировать c обе таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...