antd Hook 表单回显避坑

3 篇文章 0 订阅
1 篇文章 0 订阅

一、首先先看正确的回显方法:

使用form.setFieldsValue({name:value})回显

1.将form实例与表单绑定,获取表单Dom

 <Form
        name="basic"
        labelCol={{ span: 8 }}
        wrapperCol={{ span: 16 }}
        style={{ maxWidth: 1100, width: '1000px' }}
        // initialValues={}
        autoComplete="off"
        form={form}
      >
const [form] = Form.useForm();

2.修改表单字段的值 

  form.setFieldsValue({
       name:value
      });

二、避坑

避坑1:使用initialValues

const [iniForm, setInitForm] = useState({apiDesc: ''});

开始我尝试使用initialValues={initForm}(iniForm为useState()声明的状态)然后在组件挂载时监听并修改InitForm,最后无法实现。原因在于使用 useState() 这个 Hook 声明的 setInitForm 函数是异步的并且在组件挂载之后执行。所以无法更新表单的值。用官方的解释是 initialValues只能绑定同步值不能绑定异步值。

 避坑2:每一个字段都绑定value,使用useState()修改value,让组件重新渲染

因为使用useState()修改值后会使组件重新渲染,所以尝试使用此方法,但是仍然无效。原因同上,就是useState()的执行时机在组件挂载之后,所以不能及时将更新后的值进行渲染

   

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值