找到的原因是说:
1.和 Form 一起配合使用时,设置 destroyOnClose 也不会在 Modal 关闭时销毁表单字段数据。
2.因此第二次,对于已经存在的记录,会强制从initValues里面拿数据赋值。
综上,我把form.item 里的initValues给删了,然后再useEffect中判断
// 获取数据
useEffect(() => {
if (editValue) {
form.setFieldsValue({
icon: editValue.icon,
cnName: editValue.cnName,
enName: editValue.enName,
}); // 有编辑数据,就用编辑的数据设置初始值
setTitle('bianji');
setImageUrl(editValue.icon);
} else {
setTitle('tianjia');
setImageUrl('');
form.resetFields(); // 如果不是编辑,拿进来就重置form
}
}, [editValue, form, formatMessage]);
// 关掉modal的时候的操作
const onCancel = useCallback(() => {
setImageUrl('');
form.resetFields();// 再 重置
handleClose();
}, [form, handleClose]);