React Ant-Table Resizable 实现对Table表格的列的宽度调整

import React from "react";
import { Widget } from "erpcore";
import { Table } from 'antd';
import "./index.less";
import { Resizable } from 'react-resizable';
import 'react-resizable/css/styles.css';


const WidgetOfBase = Widget.WidgetOfBase;
const ResizeableTitle = (props) => {
    const { onResize, width, ...restProps } = props;
    if (!width) {
        return <th {...restProps} />
    }
    return (
        <Resizable
            width={width} height={0} onResize={onResize}>
            <th {...restProps} />
        </ Resizable >
    )
};

class ReactTable extends WidgetOfBase {
    constructor(props) {
        super(props);
        this.state.columns = props.rcColumns;
    };

    components = {
        header: {
            cell: ResizeableTitle,
        },
    };

    handleResize = index => (e, { size }) => {
        const { tableKey } = this.props;
        this.setState(({ columns }) => {
            const nextColumns = [...columns];
            nextColumns[index] = {
                ...nextColumns[index],
                // width: (size.width < 50) ? 50 : size.width,
                width: size.width,
            };
            console.log(nextColumns)
            if (tableKey) {
                localStorage.setItem(tableKey, JSON.stringify(nextColumns))
            }

            return { columns: nextColumns };
        });
    };

    renderOnMobile = () => {
        const { dataSource, pagination, selectedRowKeys, onSelectChange } = this.props;
        const columns = this.state.columns.map((col, index) => ({
            ...col,
            onHeaderCell: (column) => ({
                width: column.width,
                onResize: this.handleResize(index),
            }),
        }));
        const rowSelection = {
            selectedRowKeys,
            onChange: onSelectChange,
        };
        return (
            <div className="rc_table">
                <Table
                    columns={columns}
                    components={this.components}
                    dataSource={dataSource}
                    pagination={pagination}
                    size="middle"
                    rowSelection={rowSelection}
                    scroll={{ x: true }}
                />
            </div>
        )
    }
}

export default ReactTable;


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本地是好的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值