reactjs - React AntD - 过滤后选择重置
问题描述
在任何页面上选择项目都可以正常工作。我最近介绍了过滤结果的上述搜索选项。但是,如果我过滤然后单击以选择一个项目,它将删除先前设置的选择。我试图通过选择数组,但似乎无法链接这些点。
过滤器代码:
filterIcon: <span/>,
filterDropdownVisible: true,
filterDropdown: (
<div className={styles.listFilterDropdownModal}>
<Input
placeholder="Search list..."
value={listModalFilterString}
onChange={(ev) => dispatch({
type: "jobs/setListModalFilterString",
listModalFilterString: ev.target.value,
})}
/>
</div>
),
这基本上被传递到数据源中:
dataSource={(list || [])
.filter(strategy => {
// console.log(list);
// return true;
return list.name.toLowerCase().indexOf(listModalFilterString.toLowerCase()) !== -1
})
.map(list => ({
key: `list_${list.id}`,
...list,
}))}
然后是行选择代码 - 我认为这会导致问题:
rowSelection={{
selectedRowKeys: (listIds || defaultListIds).map(k => `list_${k}`),
onSelect: (r, s, selectedRows) => dispatch({
type: "job/setListIds",
listIds: selectedRows.map(row => row.id),
}),
}}
上面调用的函数就是这样做的:
setListIds: (state, {listIds}) => ({...state, listIds})
解决方案
你可以使用filterDropdown
喜欢
filterDropdown: ({
setSelectedKeys,
selectedKeys,
confirm,
clearFilters,
}) => {
return (
<div
style={{
padding: "12px",
background: "#fff",
}}
>
<Input
placeholder={`Search ${dataIndex}`}
value={selectedKeys[0]}
onPressEnter={() => confirm()}
onChange={(e) =>
setSelectedKeys(
e.target.value ? [e.target.value] : []
)
}
style={{ marginBottom: 8, display: "block" }}
/>
<Space>
<Button
type="primary"
onClick={() => confirm()}
icon={<SearchOutlined />}
size="small"
style={{ width: 90 }}
>
Search
</Button>
<Button
onClick={() => {
clearFilters();
confirm();
}}
size="small"
style={{ width: 90 }}
>
Reset
</Button>
</Space>
</div>
);
},
推荐阅读
- javascript - 如何从 ngx-datatables 中删除边框?
- django - 未调用 DRF 自定义 check_permission
- google-sheets - Google 表格计数值
- javascript - 数组算法太慢
- javascript - 无法访问 dotnev 变量
- python - 如何从 Apache Airflow 中的 SimpleHTTPOperators 访问响应标头
- php - PayPal Orders v2 在 PHP 中创建 API - UNSUPPORTED_MEDIA_TYPE
- python - Pandas 替换所有数据帧中的函数错误更改
- mysql - 如何按加入条件过滤帖子?
- python - 如何在 python 中使用每个新段落的第一行中的键从按段落分隔的文本文件中制作字典?