Ant Design是一套基于React开发的UI组件库,提供了丰富的组件和功能。以下是一个使用Ant Design中的Table组件进行按列数据筛选的代码示例:
import React, { useState } from 'react';
import { Table, Input, Button, Space } from 'antd';
import { SearchOutlined } from '@ant-design/icons';
const data = [
{ id: 1, name: 'John', age: 25 },
{ id: 2, name: 'Jane', age: 30 },
{ id: 3, name: 'Tom', age: 28 },
];
const App = () => {
const [searchText, setSearchText] = useState('');
const [searchedColumn, setSearchedColumn] = useState('');
const getColumnSearchProps = (dataIndex) => ({
filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (
setSelectedKeys(e.target.value ? [e.target.value] : [])}
onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}
style={{ marginBottom: 8, display: 'block' }}
/>
),
filterIcon: (filtered) => ,
onFilter: (value, record) =>
record[dataIndex] ? record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()) : '',
onFilterDropdownVisibleChange: (visible) => {
if (visible) {
setTimeout(() => searchInput.select(), 100);
}
},
render: (text) =>
searchedColumn === dataIndex ? (
) : (
text
),
});
const handleSearch = (selectedKeys, confirm, dataIndex) => {
confirm();
setSearchText(selectedKeys[0]);
setSearchedColumn(dataIndex);
};
const handleReset = (clearFilters) => {
clearFilters();
setSearchText('');
};
const columns = [
{ title: 'ID', dataIndex: 'id' },
{ title: 'Name', dataIndex: 'name', ...getColumnSearchProps('name') },
{ title: 'Age', dataIndex: 'age', ...getColumnSearchProps('age') },
];
return
;
};
export default App;
上述代码中,我们定义了一个名为getColumnSearchProps
的辅助函数,用于为每一列定义筛选功能。该函数返回一个对象,该对象包含了Table组件中Column的相关配置,包括筛选框的渲染、筛选逻辑的处理以及筛选结果的渲染。
在Table组件中,我们定义了三列:ID、Name和Age,其中Name和Age列的筛选功能使用了getColumnSearchProps
函数。通过调用getColumnSearchProps
函数,我们可以为每一列定义筛选框、筛选逻辑以及筛选结果的渲染。
在getColumnSearchProps
函数中,我们通过filterDropdown
属性定义了筛选框的渲染内容,包括输入框和两个按钮(搜索和重置)。在用户输入搜索关键词后,可以通过点击搜索按钮或按下回车键触发handleSearch
函数进行筛选操作。同时,我们还通过filterIcon
属性定义了筛选图标的样式。
在handleSearch
函数中,我们通过调用setSearchText
和setSearchedColumn
函数来更新搜索关键词和当前进行搜索的列。同时,我们还定义了onFilter
属性来处理筛选逻辑,
上一篇:Ant 单选按钮的值没有改变。