Ant Design Table 行内属性鼠标悬停变色实现方法
要实现鼠标悬停到每一行上时,该行内某一个属性变色,可以使用 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 样式类,从而实现属性变色的效果。
原文地址: https://www.cveoy.top/t/topic/qrNi 著作权归作者所有。请勿转载和采集!