先附上我的代码
<ProFormSelect
showSearch
name="mtoc"
label={ProForm.getLabel('MTOC', 6)}
placeholder="请选择"
formItemProps={{ style: { width: 'calc(33.3% - 24px)' } }}
// valueEnum={() => {
// const valueEnumObject = {};
// mtocOptions?.forEach((item) => {
// valueEnumObject[item.vehicleModelCode] = item.vehicleModelName;
// });
// return valueEnumObject;
// }}
request={() => {
return [
{ label: '全部', value: 'all' },
{ label: '未解决', value: 'open' },
{ label: '已解决', value: 'closed' },
{ label: '解决中', value: 'processing' },
];
}}
fieldProps={{
maxTagCount: 'responsive',
mode: 'multiple',
}}
onChange={(values, options) => {
console.log('11111', values, options);
setListDataExport((prevState) => ({ ...prevState, MTOC: values }));
}}
/>
一开始我还以为是某些方法用错了,对照着官网上的ProFormSelect一个一个的对照着改,onChange、maxTagCount注释掉,甚至把valueEnum改成request都还存在清除不掉的情况
这时候一个不起眼的showSearch
引起了我的注意,我试着把他注释掉,结果居然成功解决问题了
我赶紧去官网查了下关于这个的问题:原来是因为mode和showSearch同时使用会导致清除失效
原来官网在新版本已经把这个bug修复了,奈于我公司的项目没更新,给这个bug卡了半天
总结
如果你的Antd Pro是@ant-design/pro-components@2.3.40之前的版本,则mode多选和showSearch不能同时使用,查询会默认开启,去掉showSearch即可。