要实现鼠标悬停到每一行上时,该行内某一个属性变色,可以使用 Table 组件的 rowClassName 属性来设置行的样式类名。

首先,给 Table 组件添加 rowClassName 属性,值为一个函数,该函数接收一个参数 record,表示当前行的数据对象。在函数内部判断鼠标是否悬停在当前行上,如果是则返回一个自定义的样式类名,否则返回空字符串。

示例代码如下:

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

const data = [
  {
    key: '1',
    name: 'John Brown',
    age: 32,
    address: 'New York No. 1 Lake Park',
  },
  {
    key: '2',
    name: 'Jim Green',
    age: 42,
    address: 'London No. 1 Lake Park',
  },
  {
    key: '3',
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park',
  },
  {
    key: '4',
    name: 'Jim Red',
    age: 32,
    address: 'London No. 2 Lake Park',
  },
];

const App = () => {
  const [hoveredRow, setHoveredRow] = useState(null);

  const handleMouseEnter = (record) => {
    setHoveredRow(record.key);
  };

  const handleMouseLeave = () => {
    setHoveredRow(null);
  };

  const rowClassName = (record) => {
    return record.key === hoveredRow ? 'highlight-row' : '';
  };

  const columns = [
    {
      title: 'Name',
      dataIndex: 'name',
      key: 'name',
    },
    {
      title: 'Age',
      dataIndex: 'age',
      key: 'age',
    },
    {
      title: 'Address',
      dataIndex: 'address',
      key: 'address',
    },
  ];

  return (
    <Table
      dataSource={data}
      columns={columns}
      rowKey={(record) => record.key}
      rowClassName={rowClassName}
      onMouseEnter={handleMouseEnter}
      onMouseLeave={handleMouseLeave}
    />
  );
};

export default App;

在上面的例子中,我们使用 useState 钩子来保存当前鼠标悬停的行的 key。handleMouseEnter 函数用于设置 hoveredRow 的值为当前行的 key,handleMouseLeave 函数用于将 hoveredRow 的值设为 null。

rowClassName 函数根据 hoveredRow 的值,判断是否应该返回 highlight-row 样式类名。如果当前行的 key 与 hoveredRow 相等,则返回 highlight-row,否则返回空字符串。

最后,将 rowClassName 函数传递给 Table 组件的 rowClassName 属性,当鼠标悬停在某一行上时,该行会应用 highlight-row 样式类,从而实现属性变色的效果。

Ant Design Table 行内属性鼠标悬停变色实现方法

原文地址: https://www.cveoy.top/t/topic/qrNi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录