使用 Antd-UI 实现对表格的增删操作

在这里插入图片描述

Antd 是一个很优秀的组件库
在这里插入图片描述这篇文章使用 Antd 的 Model 组件和 Table 组件,实现对表格的增删操作。

首先来看一个基本的 Table 组件

import React from 'react'
import {
    Table } from 'antd'

// 数据源 ===> 一般都是从后端提供的接口中获取数据
const dataSource = [
  {
   
    key: '1',
    name: '胡彦斌',
    age: 32,
    address: '西湖区湖底公园1号',
  },
  {
   
    key: '2',
    name: '胡彦祖',
    age: 42,
    address: '西湖区湖底公园1号',
  },
];

// 展示在页面上的列数项,有几个对象,就有几列
const columns = [
  {
   
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
   
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
  },
  {
   
    title: '住址',
    dataIndex: 'address',
    key: 'address',
  },
];

const City = () => {
   
  return (
    <Table dataSource={
   dataSource} columns={
   columns} />
  )
}

export default City

在这里插入图片描述

但是光有数据展示还不够,我们希望可以对数据进行点击选择操作

Table 组件上有一个 rowSelection 属性上的 onChange 事件,可以监听到每一次点击选择的表格项。

import React, {
    useState } from 'react'
import {
    Table } from 'antd';

// 数据源 ===> 一般都是从后端提供的接口中获取数据
const dataSource = [
  {
   
    key: '1',
    name: '胡彦斌',
    age: 32,
    address: '西湖区湖底公园1号',
  },
  {
   
    key: '2',
    name: '胡彦祖',
    age: 42,
    address: '西湖区湖底公园1号',
  },
];

// 展示在页面上的列数项,有几个对象,就有几列
const columns = [
  {
   
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
   
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
  },
  {
   
    title: '住址',
    dataIndex: 'address',
    key: 'address',
  },
];

const rowSelection = {
   
  onChange: (selectedRowKeys, selectedRows) => {
   
    console.log(`selectedRowKeys: ${
     selectedRowKeys}`, 'selectedRows: ', selectedRows);
  },
};

const City = () => {
   
  const [selectionType, setSelectionType] = useState('checkbox');

  return (
    <div>
      <Table
        rowSelection={
   {
   
          type: selectionType,
          ...rowSelection,
        }}
        columns={
   columns}
        dataSource={
   dataSource}
      />
    </div>
  );
}

export default City

在这里插入图片描述
得到了相对应的表格列表项之后,就可以请求后端的删除数据接口,对选中的数据进行删除。当然,删除数据是一项很危险的操作,我们有必要在真正删除之前提示操作者。

添加 Model 框提示,在操作者点击确认按钮时,进行真正的删除操作。

在这里插入图片描述

import React, {
    useState } from 'react'
import {
    Table, Modal } from 'antd';

const City = () => {
   
  const [selectionType, setSelectionType] = useState('checkbox');
  const [isModalVisible, setIsModalVisible] = useState(false);
  const [selectedData, setSelectedData] = useState([])

  const showModal = () => {
   
    setIsModalVisible(true);
  };

  const handleOk = () => {
   
    console.log('selectedData', selectedData)
    // 获取数据,进行删除操作
    setIsModalVisible(false);
  };

  const handleCancel = () => {
   
    setIsModalVisible(false);
  };

  const rowSelection = {
   
    onChange: (selectedRowKeys, selectedRows) => {
   
      setSelectedData(selectedRows)
      showModal()
    },
  };

  return (
    <div>
      <Table
        rowSelection={
   {
   
          type: selectionType,
          ...rowSelection,
        }}
        columns={
   columns}
        dataSource={
   dataSource}
      />
      <Modal title="删除确认框" visible={
   isModalVisible} onOk={
   handleOk} onCancel={
   handleCancel}>
        <h1>确认是否删除?</h1>
      </Modal>
    </div>
  );
}

export default City

当数据过多时,需要进行分页操作。

PS:应该是我自身的问题,我不太清楚怎么通过 table 自带的分页去获取对应的页码数。所以我选择了使用 Antd 中 Pagination 组件

通过 Pagination 组件上的 onChange 事件,监听 pagination 的数字变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值