Arco Design 的 Modal 关闭后怎么清除表单数据?
我在用 Arco Design 的 Modal 做一个编辑表单,但每次关闭 Modal 再打开,表单里还保留着上次的值,明明我已经把 visible 设为 false 了。是不是要手动重置表单?
我试过在 onOk 或 onCancel 里调用 form.resetFields(),但有时候还是残留数据,特别是点右上角 × 关闭的时候。下面是我现在的代码:
const handleCancel = () => {
setVisible(false);
form.resetFields(); // 这行好像没生效?
};
const handleOk = () => {
form.validate().then(() => {
// 提交逻辑
setVisible(false);
form.resetFields();
});
};
unmountOnClose属性设为true。这样 Modal 关闭的时候,里面的表单组件会直接从 DOM 移除,下次打开自然就是新的了,根本不用操心重置的事。如果你不想卸载组件(比如为了性能),那就别在 onCancel 里重置,用
afterClose回调。这个回调是在 Modal 动画结束、真正隐藏后才触发的,这时候重置才稳。代码大概是这样,你可以试试看:加了这个属性,或者用 afterClose,基本就能解决残留问题了,特别是点右上角那个 X 的时候,这两个方案都能覆盖到。