React表格交互升级:用react-resizable给Antd Table添加列宽记忆功能(含本地存储方案)

React表格交互升级:用react-resizable给Antd Table添加列宽记忆功能(含本地存储方案)

在企业级后台系统中,表格作为数据展示的核心组件,其交互体验直接影响用户操作效率。Ant Design的Table组件虽然功能强大,但官方自3.x版本后移除了列宽拖拽调整的内置支持。本文将手把手教你如何基于react-resizable实现列宽拖拽功能,并结合useLocalStorage Hook实现用户偏好的持久化存储,打造更智能的表格交互体验。

1. 核心方案设计

实现一个完整的列宽记忆功能需要解决三个关键问题:

  1. 拖拽交互:通过react-resizable库实现表头拖拽手柄
  2. 状态同步:确保列宽变化能实时反映到表格渲染
  3. 持久化存储:将用户调整后的列宽保存到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, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值