pro-components icon indicating copy to clipboard operation
pro-components copied to clipboard

👑 [需求]Form 关闭重置表单能提供 delay 参数,比如在弹出框完全关闭后重置

Open tolerance-go opened this issue 3 years ago • 5 comments

提问前先看看:

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

🔩 所属模块或组件

Form

🥰 需求描述

需要一个参数来控制重置的延迟时间

⛰ 功能需求适用场景

当 Drawer or Modal Form 关闭弹窗时候会有几百毫秒的关闭动效,希望在完全关闭后进行重置,这样就避免出现完全关闭前表单数据改动的情况

🧐 解决方案

提供 delayResetFormTime 参数,Layouts Form 提供默认参数

🚑 其他信息

tolerance-go avatar Aug 02 '22 17:08 tolerance-go

你是说 重置表单 加延时?

liangchaofei avatar Aug 03 '22 06:08 liangchaofei

你是说 重置表单 加延时?

是的,我重新编辑了需求内容

tolerance-go avatar Aug 03 '22 11:08 tolerance-go

这个需求应该是让 Drawer 关闭等于表单销毁吧

chenshuai2144 avatar Aug 26 '22 08:08 chenshuai2144

这个需求应该是让 Drawer 关闭等于表单销毁吧

不是的,destroyOnClose 已经可以这样做了,我是想可以控制 resetForm 的时机,比如当关闭动画完全结束的时候

tolerance-go avatar Aug 27 '22 09:08 tolerance-go

@chenshuai2144 DrawerForm 和 ModalForm 开启 destroyOnClose 时表单值在 onFinish 后会触发 resetFields 界面上会出现关闭动画过程中表单数据跳动回初始值

// packages/form/src/layouts/ModalForm/index.tsx
onFinish={async (values) => {
    const result = await onFinishHandle(values);
    // 这里应该延迟等待关闭动画完成后在执行
    // 或者因为开启了 destroyOnClose 可以不执行
    if (result === true) {
        resetFields();
    }
    return result;
}}

SturdyCat avatar Sep 28 '22 08:09 SturdyCat

换了写法了,可以用 afterOpenChange

chenshuai2144 avatar Dec 27 '22 15:12 chenshuai2144