antd form表单默认值

使用场景:

编辑商品信息,编辑页面要带入商品的名称等信息

开始使用usestate和useEffect结果不行,会不停刷接口,或者usestate里面的值不更新,用的初始值,而不是接口返回值

以下是antd的官方表述表单 Form - Ant Design

  1. 你不能用控件的 value 或 defaultValue 等属性来设置表单域的值,默认值可以用 Form 里的 initialValues 来设置。注意 initialValues 不能被 setState 动态更新,你需要用 setFieldsValue 来更新。

  2. 你不应该用 setState,可以使用 form.setFieldsValue 来动态改变表单值。

正确操作

//创建一个引用
const formRef = React.createRef()
//对引用赋值productName和productId是表单的name名称
function Edit(props) {
    useEffect(()=>{
        if(props.match.params.id){
            getOneById(props.match.params.id).then(res=>{
                console.log(res.data.content.productName)
                formRef.current.setFieldsValue({
                    productName: res.data.content.productName,
                    productId:res.data.content.productId
                             
             })
            })
        }
        
    },[])  }
//在表单中关联这个引用formRef
 <Form  ref={formRef} name="nest-messages" onFinish={onFinish}
      onFinishFailed={onFinishFailed}>
                {/* 此处与视频讲解不一样antd4已更新*/}
                <Form.Item label="名字" rules={[{required:true ,message: 'name is required'},{warningOnly: true}]} name="productName" >
                    <Input placeholder="请输入商品名字" />

                </Form.Item>
                <Form.Item label="价格" rules={[{required:true,message: 'price is required'},{warningOnly: true},{validator:PriceValidate}]} name="productId">
                    <Input placeholder="商品价格" />

                </Form.Item>
                <Form.Item>
                    <Button htmlType="submit " type="primary">保存</Button>
                </Form.Item>

            </Form>

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Antd 中设置 Form 表单的默认值时,可以采用多种方法。其中,可以在 `<Form.Item>` 组件中使用 `defaultValue` 属性来设置默认值,但一般来说并不常用。另一种方法是在表单组件的 `initialValues` 属性中设置初始值,但需要注意每个字段的初始值必须是常量,不能是状态 (`state`)。还可以通过使用 `useEffect()` 钩子在页面渲染前设置表单项的值。例如,可以使用以下代码来设置表单项 `type` 的初始值: ```javascript useEffect(() => { form.setFieldValue('type', '1'); }, []); ``` 如果要清空 Form 表单输入框的值,可以使用 `resetFields` 方法来实现。例如,可以使用以下代码来清空表单: ```javascript form.resetFields(); ``` 这样就能够成功清空表单输入框的值了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Antd中设置 Form 初始值和清空Form表单输入框(转)](https://blog.csdn.net/qq_41767116/article/details/130498580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Ant Design 常见用法与坑点总结(二):Form 表单下拉框设置初始值](https://blog.csdn.net/weixin_45138590/article/details/130277713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值