Naive UI 的 Modal 关闭后怎么清空表单数据?
我在用 Naive UI 的 Modal 做一个用户信息编辑弹窗,打开时会把用户数据传进去填充表单。但关闭 Modal 后再打开另一个用户,表单里还是上次的数据,明显没清掉。我试过在 onClose 里手动重置状态,但好像时机不对,或者根本没触发?
下面是我简化后的代码:
const [showModal, setShowModal] = useState(false);
const [formData, setFormData] = useState({ name: '' });
const openModal = (user) => {
setFormData(user);
setShowModal(true);
};
// 想在关闭时清空,但无效?
const handleClose = () => {
setShowModal(false);
setFormData({ name: '' });
};
是不是应该用 onAfterLeave 之类的钩子?或者有别的推荐做法?
两种靠谱的解决方案:
第一种是用onAfterLeave,这是动画完全结束的回调:
第二种更简单,在openModal里重置表单,确保每次打开都是干净状态:
我平时喜欢用第二种,因为就算用户快速连续打开不同弹窗也不会出问题。第一种方案在极端情况下如果用户手速太快,可能在动画没结束时就又打开了新弹窗。