React表格交互升级:用react-resizable给Antd Table添加列宽记忆功能(含本地存储方案)
在企业级后台系统中,表格作为数据展示的核心组件,其交互体验直接影响用户操作效率。Ant Design的Table组件虽然功能强大,但官方自3.x版本后移除了列宽拖拽调整的内置支持。本文将手把手教你如何基于react-resizable实现列宽拖拽功能,并结合useLocalStorage Hook实现用户偏好的持久化存储,打造更智能的表格交互体验。
1. 核心方案设计
实现一个完整的列宽记忆功能需要解决三个关键问题:
- 拖拽交互:通过react-resizable库实现表头拖拽手柄
- 状态同步:确保列宽变化能实时反映到表格渲染
- 持久化存储:将用户调整后的列宽保存到localStorage
graph TD
A[用户拖拽列宽] --> B[触发resize回调]
B --> C[更新columns状态]
C --> D[保存到localStorage]
D --> E[下次加载时读取]
提示:选择localStorage作为存储介质时需注意单个域名下的存储限制通常为5MB,适合保存小型配置数据
2. 基础拖拽功能实现
首先安装必要的依赖:
yarn add react-resizable @types/react-resizable
创建可复用的ResizableTable组件:
import { Table } from "antd";
import { Resizable } from "react-resizable";
import "react-resizable/css/styles.css";
const ResizableHeaderCell = ({
width,
onResize,
children,
...restProps
}) => {
return (
<Resizable
width={width}
height={0}
onResize={onResize}
draggableOpts={
{ enableUserSelectHack: false }}
minConstraints={[100, 0]} // 最小宽度100px
maxConstraints={[500, 0]} // 最大宽度500px
>
<th {...restProps}>{children}</th>
</Resizable>
);
};
export const ResizableTable = ({ columns, ...props }) => {
const [tableColumns,

&spm=1001.2101.3001.5002&articleId=155174404&d=1&t=3&u=3e7654f5694240219772d22f6949d5f3)
8289

被折叠的 条评论
为什么被折叠?



