關(guān)于Antd Table組件列寬的一些疑惑

前言

前些年參與的幾個(gè)項(xiàng)目,前端部分主要采用Vue+ElementUI進(jìn)行開發(fā)。最近參與的項(xiàng)目,前端部分大膽的轉(zhuǎn)向了React+Antd。

疑惑

在之前的Vue+ElementUI項(xiàng)目里,Table組件列的列寬(各個(gè)列的列寬和)如果超過Table容器寬度,則會(huì)自動(dòng)出現(xiàn)橫向滾動(dòng)條。另外Table組件列的列寬如果達(dá)不到Table容器寬度,Table組件的右側(cè)則會(huì)留空,不顯示任何內(nèi)容??梢詤⒖糄emo復(fù)現(xiàn):https://codesandbox.io/s/elementui-table-column-width-20220314-12secw
Antd中的Table組件,列寬的渲染方式似乎和ElementUI有點(diǎn)不太一樣。在Antd中,不管Table組件列的列寬有沒有超過Table容器的寬度,各個(gè)列實(shí)際渲染的時(shí)候,都是按照當(dāng)前列的列寬占所有列的列寬的拜訪比寬度進(jìn)行渲染的,比如總共有三列A、B、C,寬度分別是50px、50px100px,A、B、C三列實(shí)際渲染寬度分別是25%、25%50%,并不是期望的50px50px、100px。剛接觸Antd的我,對(duì)于這種方式有點(diǎn)百思不得其解。
附上Antd版的Demo地址:https://codesandbox.io/s/antd-table-column-width-20220314-jx7cli?file=/src/MyTable.js

解決方案

  1. 對(duì)于Table組件列寬小于Table容器寬度,希望是在Table組件右側(cè)進(jìn)行留空。我個(gè)人能想到的一個(gè)成本比較低的方法是給列,補(bǔ)上一個(gè)不指定寬度的列,這樣在Table組件渲染時(shí),該列會(huì)按照實(shí)際剩余寬度進(jìn)行渲染,并且內(nèi)容為空。
    import { Table } from "antd";
    
    const dataSource = [
      {
        key: "1",
        name: "張三",
        age: 32,
        address: "西湖區(qū)湖底公園1號(hào)"
      },
      {
        key: "2",
        name: "李四",
        age: 42,
        address: "西湖區(qū)湖底公園1號(hào)"
      }
    ];
    
    const columns = [
      {
        title: "姓名",
        dataIndex: "name",
        key: "name",
        width: 110
      },
      {
        title: "年齡",
        dataIndex: "age",
        key: "age",
        width: 90
      },
      {
        title: "住址",
        dataIndex: "address",
        key: "address",
        width: 220
      },
      {} // 補(bǔ)上的列,實(shí)際渲染時(shí)寬度為表格組件剩余寬度,內(nèi)容為空
    ];
    
    export default function MyTable() {
      return (
        <div>
          <Table bordered dataSource={dataSource} columns={columns} />;
        </div>
      );
    }
    
    
    上述代碼Demo地址:https://codesandbox.io/s/antd-table-column-width-20220314-02-xppcn4?file=/src/MyTable.js
  2. 對(duì)于Table組件列寬超過Table容器寬度,期望表格組件出現(xiàn)橫向滾動(dòng)條進(jìn)行滾動(dòng)。對(duì)于該需求,可以通過指定Table組件屬性scroll={{ x: "max-content" }}的方式來調(diào)出滾動(dòng)條。關(guān)于scroll屬性的說明可以參考文檔:https://ant.design/components/table-cn/#scroll。
    import { Table } from "antd";
    
    const dataSource = [
      {
        key: "1",
        name: "張三",
        age: 32,
        address: "西湖區(qū)湖底公園1號(hào)"
      },
      {
        key: "2",
        name: "李四",
        age: 42,
        address: "西湖區(qū)湖底公園1號(hào)"
      }
    ];
    
    const columns = [
      {
        title: "姓名",
        dataIndex: "name",
        key: "name",
        width: 500
      },
      {
        title: "年齡",
        dataIndex: "age",
        key: "age",
        width: 400
      },
      {
        title: "住址",
        dataIndex: "address",
        key: "address",
        width: 900
      },
      {}
    ];
    
    export default function MyTable() {
      return (
        <div>
          <Table
            bordered
            dataSource={dataSource}
            columns={columns}
            scroll={{ x: "max-content" }} // 設(shè)置scroll
          />
        </div>
      );
    }
    
    
    上述代碼Demo地址:https://codesandbox.io/s/antd-table-column-width-20220314-03-e2p223?file=/src/MyTable.js

寫在最后

以上就是我關(guān)于Table組件的一些疑惑,歡迎大家在評(píng)論區(qū)進(jìn)行討論交流。 : )

參考鏈接:https://blog.csdn.net/m0_58016522/article/details/123470541

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容