我在这里使用react table内置的setFilter函数。第二个参数是每个输入类别将匹配但不完全匹配的值。例如,如果我们有政府和非政府两个类别,我必须过滤政府。但它会过滤政府和非政府,因为“政府”一词出现在“非政府”一词中。 我现在该怎么办?
const tableInstance = useRef(null);
const filterTests = (criteria) => {
if (tableInstance.current) {
tableInstance.current.setFilter('test_category', criteria.category);
tableInstance.current.setFilter('test_state', criteria.state);
tableInstance.current.setFilter('test_client', criteria.client);
tableInstance.current.setFilter('test_name', criteria.name);
}
};
我正在另一个组件中调用filterTests表:
const handleFilter = () => {
let criteria = {};
criteria.category = category;
criteria.state = state;
criteria.client = client;
criteria.name = name;
filterTests(criteria);
};
我的列文件的数据是:
export const columns = [
{
id: 'test_name',
Header: 'NAME',
accessor: 'name',
},
{
id: 'candidate_site_blocked',
Header: `BLOCK
CANDIDATE SITE
REGISTERATION`,
accessor: 'block_candidate_site_registration',
},
{
id: 'admin_site_blocked',
Header: `BLOCK
ADMIN SITE
REGISTERATION`,
accessor: 'block_admin_site_registration',
},
{
id: 'delete_test',
Header: '',
},
{
id: 'test_category',
accessor: 'category',
},
{
id: 'test_state',
accessor: 'state',
},
{
id: 'test_client',
accessor: 'client',
},
];
尝试
{ id: 'your_column_id', 访问者:'your_accessor', 过滤器:“等于”, }
在相应的列对象中尝试此操作:
{
id: 'your_column_id',
accessor: 'your_accessor',
filter: (rows, id, filterValue) =>
rows.filter((row) => filterValue === '' || row.values[id] === filterType)
}
对于 tanstack/react-table v8 只需添加列定义:
{
accessorKey: "test",
header: "test",
filterFn: "equals",
},