解决AntDesign的Tabs组件内嵌Table表格组件,切换Tab后表格变宽的问题
warning:
这篇文章距离上次修改已过202天,其中的内容可能已经有所变动。
解决Ant Design的Tabs组件内嵌Table表格组件,切换Tab后表格变宽的问题,可以通过以下方法:
- 使用
resizeObserver
监听变化,并重置表格宽度。 - 监听Tab的切换事件,在切换后重置表格宽度。
- 使用Ant Design的
Table
组件的columns
属性中的width
来固定列宽,避免表格宽度随着内容变化而变宽。
以下是一个简单的示例代码:
import React, { useEffect, useRef } from 'react';
import { Tabs, Table } from 'antd';
import { EditOutlined, EllipsisOutlined } from '@ant-design/icons';
const { TabPane } = Tabs;
const data = [
// ...数据
];
const columns = [
// ...列定义
];
const App = () => {
const tableRef = useRef(null);
const resetTableWidth = () => {
if (tableRef.current) {
const table = tableRef.current.rcTable;
if (table) {
table.resizeObserver.disconnectAll();
table.resizeColumn();
}
}
};
useEffect(() => {
resetTableWidth();
}, []);
return (
<Tabs defaultActiveKey="1" onTabClick={resetTableWidth}>
<TabPane tab="Tab 1" key="1">
<Table
ref={tableRef}
columns={columns}
dataSource={data}
/>
</TabPane>
<TabPane tab="Tab 2" key="2">
Content of Tab Pane 2
</TabPane>
{/* 其他TabPane */}
</Tabs>
);
};
export default App;
在这个示例中,我们使用了useRef
来获取表格的引用,并定义了resetTableWidth
函数来重置表格的宽度。我们在Tabs
组件的onTabClick
事件中调用resetTableWidth
,以确保在切换Tab时表格宽度能够正确地被重置。同时,我们在组件挂载后也调用resetTableWidth
来确保初始化时表格宽度正确。
评论已关闭