【问题标题】:Material-UI table overflows its table wrapperMaterial-UI 表格溢出其表格包装器
【发布时间】:2018-07-17 16:40:37
【问题描述】:

我的 material-ui 表格可以调整大小并水平滚动,但是表格元素及其子元素溢出,在页面右侧不可见。 这是行为的 GIF。 https://imgur.com/a/ecteOrc

以及被检查元素的图像。 https://imgur.com/a/2Tgv8s5

什么可能导致这种行为?

const styles = theme => ({
  root: {
    width: '100%',
    marginTop: theme.spacing.unit * 3
  },
  table: {},
  tableWrapper: {
    overflowX: 'auto'
  }
});

.

<Paper className={classes.root}>
        <EnhancedTableToolbar
          numSelected={selected.length}
          tableTitle={'Accounts'}
        >
          <AccountFilterList />
        </EnhancedTableToolbar>
        <div className={classes.tableWrapper}>
          <Table className={classes.table} aria-labelledby='tableTitle'>
            <EnhancedTableHead
              numSelected={selected.length}
              order={order}
              orderBy={orderBy}
              onSelectAllClick={this.handleSelectAllClick}
              onRequestSort={this.handleRequestSort}
              rowCount={data.length}
              columnData={columnData}
            />
            <TableBody>
              {data
                .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
                .map(n => {
                  const isSelected = this.isSelected(n.ref);
                  return (
                    <TableRow
                      hover
                      onClick={event => this.handleRowClick(event, n.ref)}
                      role='checkbox'
                      aria-checked={isSelected}
                      tabIndex={-1}
                      key={n.ref}
                      selected={isSelected}
                    >
                      <TableCell padding='checkbox'>
                        <Checkbox
                          checked={isSelected}
                          onChange={event => this.handleClick(event, n.ref)}
                        />
                      </TableCell>
                      <TableCell>
                        <Avatar
                          alt={n.name}
                          src={`//logo.clearbit.com/${n.clearBit}`}
                          onError={e => {
                            e.target.src =
                              'https://doxhze3l6s7v9.cloudfront.net/app/static/img/company-default-img.png';
                          }}
                        />
                      </TableCell>
                      <TableCell>{n.name}</TableCell>
                      <TableCell>{n.owner}</TableCell>
                      <TableCell numeric>{n.dateCreated}</TableCell>
                    </TableRow>
                  );
                })}
              {emptyRows > 0 && (
                <TableRow style={{ height: 49 * emptyRows }}>
                  <TableCell colSpan={6} />
                </TableRow>
              )}
            </TableBody>
          </Table>
        </div>
        <TablePagination
          component='div'
          count={data.length}
          rowsPerPage={rowsPerPage}
          page={page}
          backIconButtonProps={{
            'aria-label': 'Previous Page'
          }}
          nextIconButtonProps={{
            'aria-label': 'Next Page'
          }}
          onChangePage={this.handleChangePage}
          onChangeRowsPerPage={this.handleChangeRowsPerPage}
        />
      </Paper>

【问题讨论】:

    标签: javascript css reactjs material-ui


    【解决方案1】:

    您的 Parent 包装器必须指定一些宽度,这就是它在右侧占用该空间的原因。检查该空白是由表格元素还是父包装元素(AppBar)引起的。

    【讨论】:

    • 我包含的“table”元素的图像是显示任何溢出的最顶部元素。没有任何元素包裹它,其宽度超出屏幕。
    • 只是为了确定,如果您删除表格元素,它是否仍然有那个空白空间。我有类似的经历,我的应用栏组件导致了我的问题。
    • 刚刚检查过。移除表会移除溢出。不过还是谢谢。
    • 似乎material-ui 样式优先于我输入的样式。即使在桌子上设置最大宽度也无济于事。 imgur.com/a/PmUcIJs
    • 如果是这种情况,请尝试使用内联样式属性来覆盖它,并请检查 tableWrapper 自动溢出,看看它是否导致了问题。
    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2020-11-18
    相关资源
    最近更新 更多