以下是一个使用Ant Design表格组件实现按日期范围过滤的示例代码:
import React, { useState } from 'react';
import { Table, DatePicker, Button } from 'antd';
import moment from 'moment';
const { RangePicker } = DatePicker;
const dataSource = [
{
key: '1',
name: 'John',
date: '2021-01-01',
},
{
key: '2',
name: 'Mike',
date: '2021-02-15',
},
{
key: '3',
name: 'Tom',
date: '2021-03-20',
},
];
const columns = [
{
title: 'Name',
dataIndex: 'name',
key: 'name',
},
{
title: 'Date',
dataIndex: 'date',
key: 'date',
},
];
const FilterableTable = () => {
const [filteredDataSource, setFilteredDataSource] = useState(dataSource);
const [selectedDateRange, setSelectedDateRange] = useState([]);
const handleDateRangeChange = (dates) => {
setSelectedDateRange(dates);
filterDataSource(dates);
};
const filterDataSource = (dates) => {
const filteredData = dataSource.filter((row) => {
const rowDate = moment(row.date);
return rowDate.isBetween(dates[0], dates[1], 'day', '[]');
});
setFilteredDataSource(filteredData);
};
return (
);
};
export default FilterableTable;
在上述代码中,我们使用了Ant Design的RangePicker组件来选择日期范围,并通过onChange事件监听日期范围的变化。然后,我们根据选择的日期范围过滤数据源,并将过滤后的数据传递给表格组件进行展示。
filterDataSource函数使用moment库来将字符串日期转换为可比较的日期对象,并使用isBetween方法来判断日期是否在选择的范围内。最后,我们使用setFilteredDataSource来更新过滤后的数据源,从而更新表格的展示内容。
在组件中,我们使用了useState来定义filteredDataSource和selectedDateRange的状态,并在handleDateRangeChange函数中更新状态和调用filterDataSource函数进行过滤。另外,我们还添加了一个“Clear Filter”按钮,点击后可以清除选择的日期范围并重置过滤。