React使用antd里面的Table组件,表格可自由控制列宽

import React, {Component} from 'react'
import {Resizable} from 'react-resizable';
import 'react-resizable/css/styles.css' //要引入样式
import {Table} from 'antd';
import '../../assets/style/updateCart.css'


const ResizableTitle = props => {
    const {onResize, width, ...restProps} = props;

    if (!width) {
        return ;
    }

    return (
         {
                        e.stopPropagation();
                    }}
                />
            }
            onResize={onResize}
            draggableOpts={{enableUserSelectHack: false}}
        >
            
        
    );
};
export default class UpdateCart extends Component {
    state = {
        columns: [
            {
                title: 'Date',
                dataIndex: 'date',
                width: 200,
            },
            {
                title: 'Amount',
                dataIndex: 'amount',
                width: 100,
                sorter: (a, b) => a.amount - b.amount,
            },
            {
                title: 'Type',
                dataIndex: 'type',
                width: 100,
            },
            {
                title: 'Note',
                dataIndex: 'note',
                width: 100,
            },
            {
                title: 'Action',
                key: 'action',
                render: () => Delete,
            },
        ],
    };

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

    data = [
        {
            key: 0,
            date: '2018-02-11',
            amount: 120,
            type: 'income',
            note: 'transfer',
        },
        {
            key: 1,
            date: '2018-03-11',
            amount: 243,
            type: 'income',
            note: 'transfer',
        },
        {
            key: 2,
            date: '2018-04-11',
            amount: 98,
            type: 'income',
            note: 'transfer',
        },
    ];

    handleResize = index => (e, {size}) => {
        this.setState(({columns}) => {
            const nextColumns = [...columns];
            nextColumns[index] = {
                ...nextColumns[index],
                width: size.width,
            };
            return {columns: nextColumns};
        });
    };

    render() {
        const columns = this.state.columns.map((col, index) => ({
            ...col,
            onHeaderCell: column => ({
                width: column.width,
                onResize: this.handleResize(index),
            }),
        }));
        return (
            
); } }
#components-table-demo-resizable-column .react-resizable {
    position: relative;
    background-clip: padding-box;
}

#components-table-demo-resizable-column .react-resizable-handle {
    position: absolute;
    right: -5px;
    bottom: 0;
    z-index: 1;
    width: 10px;
    height: 100%;
    cursor: col-resize;
}

//控制表格icon的样式
.react-resizable-handle {
    top: 0;
    left: 99%;
    background-image: none;
    cursor: col-resize;
    height: 100%;
}

链接:表格 Table - Ant Design 

你可能感兴趣的:(reactjs)