Antd表格鼠标悬浮某一行显示操作按钮

框架:React

UI:antd

import { useEffect, useState } from "react"
import type { ColumnsType } from 'antd/es/table'
import { EditOutlined, MinusCircleOutlined, InfoCircleOutlined } from '@ant-design/icons'

interface DataType {
  user_name: string
  user_role: number
}

export default function Table() {
  const [showIcon, setShowIcon] = useState(false)
  const [iconIndex, setIconIndex] = useState(-1)

  const columns: ColumnsType<DataType> = [
    {
      title: 'Name',
      dataIndex: 'user_name',
      render: (user_name, record, index) => (
        <Space>
          <span>{user_name}</span>
          <InfoCircleOutlined style={{ visibility: showIcon && index == iconIndex ? 'visible' : 'hidden' }} onClick={() => toDetailModal(user_name)} />
        </Space>
      )
    },
    {
      title: 'Role',
      dataIndex: 'user_role',
      render: (user_role, record, index) => (
        <Space>
          <span>{user_role === 0 ? 'Admin' : 'Viewer'}</span>
          <EditOutlined style={{ visibility: showIcon && index == iconIndex ? 'visible' : 'hidden' }} onClick={() => handleRoleUpdate(record)} />
        </Space>
      )
    },
    {
      title: '',
      key: 'action',
      width: 200,
      render: (_, record) => (
        <MinusCircleOutlined onClick={() => handleDelete(record)} />
      ),
    },
  ]

  const hoverRow = (record: any, index: any) => {
    setShowIcon(true)
    setIconIndex(index)
}
  return (<Table
          onRow={(record, index) => {
            return {
              onMouseEnter: () => { hoverRow(record, index) },
              onMouseLeave: () => setShowIcon(false),
            }
          }}
          columns={columns}
          dataSource={yourDataSource} />)
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值