前端项目实战39-table要单独形成一套组件-优秀呀

子组件

import React, { useCallback, useState } from 'react';
import { Table } from 'antd';
import { PaginationProps } from 'antd/lib/pagination';
import { TableProps } from 'antd/lib/table';
import { PageResponseData } from './type';

interface BaseTableProps<T> extends TableProps<T> {
    data: {
        list: T[];
        page: PageResponseData;
    };
    children: React.ReactNode;
    onChange: (page: PaginationProps) => void;
}

function BasicTable<T extends { id?: number }>(props: BaseTableProps<T>) {
    const {
        data: { list, page },
        ...resetProps
    } = props;

    const [pagination, setPagination] = useState<PaginationProps>({
        defaultCurrent: 1,
        defaultPageSize: 10,
        showSizeChanger: true,
    });

    const onTableChange = useCallback((pageParams: PaginationProps) => {
        setPagination(pageParams);
        props.onChange(pageParams);
    }, []);

    return (
        <Table<T>
            bordered
            {...resetProps}
            onChange={onTableChange}
            style={{ marginTop: '24px' }}
            dataSource={list}
            rowKey={record => `${record.id}`}
            pagination={{
                ...pagination,
                total: page.dataTotal,
                showTotal: () => {
                    return '共 ' + page.dataTotal + ' 条记录';
                },
            }}
        >
            {props.children}
        </Table>
    );
}

export default BasicTable;

父组件

 {/* 数据表格 */}

            <BasicTable<Menu> data={menuData} onChange={onTableChange} loading={loading}>

                <Table.Column<Menu> title="所属工厂" dataIndex="factoryName" align="center"></Table.Column>

                <Table.Column<Menu> title="所属车间" dataIndex="workshopName" align="center"></Table.Column>

                <Table.Column<Menu> title="工段名称" dataIndex="name" align="center"></Table.Column>

                <Table.Column<Menu> title="添加时间" dataIndex="registerDate" align="center"></Table.Column>

                <Table.Column<Menu> title="修改时间" dataIndex="registerDate" align="center"></Table.Column>

                <Table.Column<Menu>

                    title="操作"

                    align="center"

                    render={(text, record, index) => (

                        <MenuButton index={index} onButtonClick={onButtonClick} />

                    )}

                ></Table.Column>

            </BasicTable>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值