【发布时间】:2018-10-16 08:23:09
【问题描述】:
在任何页面中选择项目都可以正常工作。我最近介绍了过滤结果的上述搜索选项。但是,如果我过滤然后单击以选择一个项目,它会删除以前设置的选择。我试图通过选择数组,但似乎无法链接这些点。
过滤器代码:
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})
【问题讨论】: