You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为React中Material-UI的MaterialTable添加横向滚动条查看溢出列

解决Material-Table移动端横向滚动问题

我来帮你搞定这个移动端表格横向滚动的需求!现在用的wordWrap: "break-word"会让内容换行适配宽度,咱们可以通过几步调整换成横向滚动的效果:

步骤1:去掉换行样式,添加滚动容器

先把rowStyle里的wordWrap: "break-word"删掉,然后给MaterialTable套一个带横向滚动能力的外层容器,让超出容器宽度的表格内容可以滚动查看。

步骤2:配置表格样式确保内容不换行

在表格的options里补充headerStyle和cellStyle,设置内容强制不换行,配合已经开启的tableLayout: "fixed"固定列宽,这样所有列会保持在同一行,超出容器时就会触发横向滚动条。

修改后的完整代码

return (
  {/* 外层横向滚动容器 */}
  <div style={{ overflowX: 'auto', maxWidth: '100%' }}>
    <MaterialTable
      title="Editable Example"
      columns={state.columns}
      data={state.data}
      options={{
        rowStyle: {
          // 强制单元格内容不换行
          whiteSpace: 'nowrap',
        },
        // 表头同样设置不换行
        headerStyle: {
          whiteSpace: 'nowrap',
        },
        padding: "dense",
        tableLayout: "fixed",
        actionsColumnIndex: -1,
        exportButton: true,
        draggable: true,
      }}
      editable={{
        onRowAdd: (newData) => new Promise((resolve) => {
          setTimeout(() => {
            resolve();
            setState((prevState) => {
              const data = [...prevState.data];
              data.push(newData);
              return { ...prevState, data };
            });
          }, 600);
        }),
        onRowUpdate: (newData, oldData) => new Promise((resolve) => {
          setTimeout(() => {
            resolve();
            if (oldData) {
              setState((prevState) => {
                const data = [...prevState.data];
                data[data.indexOf(oldData)] = newData;
                return { ...prevState, data };
              });
            }
          }, 600);
        }),
        onRowDelete: (oldData) => new Promise((resolve) => {
          setTimeout(() => {
            resolve();
            setState((prevState) => {
              const data = [...prevState.data];
              data.splice(data.indexOf(oldData), 1);
              return { ...prevState, data };
            });
          }, 600);
        }),
      }}
    />
  </div>
);

效果说明

  • 外层容器的overflowX: 'auto'会在表格宽度超过容器时自动显示横向滚动条;
  • whiteSpace: 'nowrap'确保表头和单元格内容不会换行,保持在一行展示;
  • tableLayout: "fixed"让表格列宽保持固定,不会因为内容长度随意拉伸,保证整体布局稳定。

这样在移动端尺寸下,用户就能通过横向滚动轻松查看所有溢出的列啦!

内容的提问来源于stack exchange,提问作者Shadow Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:12:29