ant的Modal和Form关闭时销毁表单字段数据(hooks)

  • <Modal /> 默认关闭后状态不会自动清空, 如果希望每次打开都是新内容,请设置 destroyOnClose

  • <Modal /> 和 Form 一起配合使用时,设置 destroyOnClose 也不会在 Modal 关闭时销毁表单字段数据,需要设置 <Form preserve={false} />

ant的Modal文档中已经写了这俩方法,但我的编辑和添加弹框里表单的值还是延迟一次才更新
解决方法:
  1. Modal窗口我们都有应用一个Visible来控制是否显示, 我们只要利用这个值得变化就可以实现Modal组件的重新挂载了。
{ Visible && <Modal ....../> }
  1. 在useEffect中判断,如果modal状态发生改变,用form.resetFields()重置表单数据
    如果第二种不生效,把Modal的状态值也添加进effect参数中
  useEffect(() => {
    form.resetFields();
  }, [form, Visible]);

最后代码:

useEffect(() => {
    form.resetFields();
  }, [form, Visible]);

  return (
    <>
      {Visible && (
        <Modal
          visible={Visible}
          destroyOnClose
        >
          <Form
            form={form}
            initialValues={}
            preserve={false}
          >
          </Form>
        </Modal>
      )}
    </>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容