首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在React中使用getFieldDecorator的嵌套Antdesign表单

,getFieldDecorator是Ant Design中的一个高阶组件,用于处理表单字段的双向绑定和校验规则。它可以帮助我们简化表单的开发流程,并提供了丰富的校验规则和错误提示。

在使用getFieldDecorator时,我们需要传入一个唯一的字段名作为参数,并通过配置对象来设置校验规则和其他属性。嵌套Ant Design表单时,我们可以通过getFieldDecorator的嵌套来实现。

首先,我们需要在React组件中引入Ant Design的Form组件和getFieldDecorator方法:

代码语言:txt
复制
import { Form, Input } from 'antd';
const { getFieldDecorator } = Form;

然后,在render方法中使用getFieldDecorator来包裹表单字段。例如,我们创建一个包含嵌套表单的示例:

代码语言:txt
复制
render() {
  return (
    <Form>
      <Form.Item label="用户名">
        {getFieldDecorator('username', {
          rules: [{ required: true, message: '请输入用户名' }],
        })(<Input />)}
      </Form.Item>
      <Form.Item label="密码">
        {getFieldDecorator('password', {
          rules: [{ required: true, message: '请输入密码' }],
        })(<Input.Password />)}
      </Form.Item>
    </Form>
  );
}

在上述示例中,我们使用getFieldDecorator来包裹Input组件,并通过配置对象设置了校验规则。getFieldDecorator会返回一个经过包装的组件,它会自动与表单进行双向绑定,并根据校验规则进行校验。

对于嵌套表单,我们可以在getFieldDecorator的配置对象中使用嵌套的方式来设置校验规则。例如,我们可以创建一个包含嵌套表单的示例:

代码语言:txt
复制
render() {
  return (
    <Form>
      <Form.Item label="联系人">
        {getFieldDecorator('contact', {
          rules: [
            { required: true, message: '请输入联系人姓名' },
            { type: 'object', required: true, message: '请输入联系人信息' },
          ],
        })(
          <Form>
            <Form.Item label="姓名">
              {getFieldDecorator('name', {
                rules: [{ required: true, message: '请输入姓名' }],
              })(<Input />)}
            </Form.Item>
            <Form.Item label="电话">
              {getFieldDecorator('phone', {
                rules: [{ required: true, message: '请输入电话号码' }],
              })(<Input />)}
            </Form.Item>
          </Form>
        )}
      </Form.Item>
    </Form>
  );
}

在上述示例中,我们在getFieldDecorator的配置对象中使用了嵌套的方式来设置校验规则。通过嵌套的Form组件,我们可以实现对联系人姓名和电话号码的校验。

总结一下,使用getFieldDecorator的嵌套Ant Design表单可以帮助我们简化表单的开发流程,并提供丰富的校验规则和错误提示。通过嵌套的方式,我们可以实现对嵌套表单字段的校验和双向绑定。在实际开发中,我们可以根据具体的业务需求和表单结构来灵活运用getFieldDecorator的嵌套功能。

腾讯云相关产品推荐:腾讯云云开发(https://cloud.tencent.com/product/tcb)是一款集云函数、数据库、存储、托管等功能于一体的云原生后端一体化解决方案。它提供了丰富的后端能力和开发工具,可以帮助开发者快速构建和部署应用,实现前后端分离开发。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数栈技术文章分享:你居然是这样的initialValue

先说一下写着篇文章的契机,是因为回显,复杂表单的回显,让我觉得我对initialValue这个属性是有误解的。...一、initialValue的出处和定义 initialValue的出处: AntDesign/Form表单件/getFieldDecorator(id,options)装饰器函数/第二个参数options...用户手动更新表单数据,比如在组件中手动输入,在组件中手动选择等等,在用户手动更新数据之后,initialValue的值改变不会更新表单值。 2....下面的例子中在生命周期函数componentDidMount中执行了setFieldsValue方法,其他不变,你会发现不管怎么点击“重新获取数据按钮”,城市对应的值都不会被更新,而总量对应的值却一直在更新...数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据

1K10
  • Antd Form 实现机制解析

    背景 “在中后台业务中,表单页面基础的场景包括组件值的收集、校验和更新。...在 to B 业务中,表单页面的需求往往更复杂和定制化,除了上述的基本操作,还要处理包括自定义表单组件、表单联动、表单的异步检验等复杂场景,在一些大型表单页面中还要考虑性能的问题,表单页面的需求往往是新同学摔得第一个跤...20191210141722 Render 阶段 被 Form 管理的组件,需要使用 props.form.getFieldDecorator 来包装,在 Render 阶段需要调用 getFieldDecorator...在子组件 Render 的执行过程中, getFieldDecorator 方法从 fieldStore 中读取实时的表单数据以及校验信息,并通过注入 value 或者 valuePropName 的值设定的属性来更新表单...嵌套数据结构收集 FieldStore 内部集成了 lodash/set,可以设置对象路径(eg: a.b.c 或者 a.b[0])为字段值,通过使用对象路径字段,我们可以很方便的实现嵌套数据结构值的收集

    2.7K20

    10分钟精通Ant Design Form表单

    本文适合React、Vue开发者阅读,10分钟不够?那就再加10分钟。 被人诟病的Form antd被人吐槽最多的除了彩蛋之外,那应该就是Form表单了。...写这篇文章不是为了吐槽Form表单,当然我也并没有更好的优化Form表单的方案,本文的目的是希望大家能够通过本文了解Form表单的本质,更好的使用的Form表单。...Vue版Form的进化史 起初我们使用了和React版一致的写法,必须使用Form.create包裹组件,但vue推崇的template语法很难再去使用,你不得不去在Vue中使用JSX,遭到了用户的各种吐槽...,但是我不想让组件嵌套太深,所以我们还是使用a-form-item进行劫持组件,为了能够区分需要劫持的哪些组件,我们使用指令进行标记并传值, 之所以使用指令是因为我们不应该为一个需要注册的组件传递一个不相关的属性...举一个很简单也很常见的栗子: 在系统中同一份数据被多处组件(包含可编辑的Form)使用是常有的事情,我们在表单中改变这份数据,同时数据的改变同步到各个相关组件中,非常easy的完成了需求。

    2.7K30

    最熟悉的陌生人 rc-form

    但是我们可能会忽略掉在这些优秀的第三方库中的某些组件可能也依赖于其他优秀的库!正如我们使用频率很高的 Ant Design 中的 Form 组件(这里我说的是 React 版本的)。...浅析内部实现 我们就先从最初的的渲染表单的逻辑开始,我们业务场景中用到的表单组件都会使用 getFieldDecorator 包装一下。...,以传入的 name 为索引 key,支持嵌套、存储表单数据, 即配置信息不涉及值的问题,主要包括: name 字段的名称 originalProps 被 getFieldDecorator( ) 装饰的组件的原始...,如果用户没有设置 trigger 和 valuePropName 则使用默认值,随后调用 fieldsStore 中的getFieldMeta 方法,fieldsStore 实例对象在整个过程中尤为关键...在更新组件后,触发 render 方法,接着又回到一开始 getFieldDecorator 中获取 fieldStore 内的值,返回被修改后的组件。

    1.1K20

    Form 表单在数栈的应用(下):深入篇

    这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求。...主要介绍 Form 表单的创建和 Form表单双向绑定(getFieldDecorator)。 后文中所提到的 Form 表单均为 Antd 3.x 中的 Form 组件,以下简称为 Form 表单。...createBaseForm 方法,这个方法起到装饰器的作用,在 props 中包装了一个默认为 form 的变量,在这个变量中完成 Form 的所有功能。...1.3 validateFields 通常使用 validateFields 方法对我们的表单数据进行校验,查看 createBaseForm.js 文件中 validateFields 方法的实现后,...props.form 中,供开发者调用; 2、通过 getFieldDecorator 初始化表单的属性和值,达到双向绑定的效果; 3、校验通过,把数据存到 fieldsStore 中;校验不通过,

    87210

    Form 表单在数栈的应用(下):深入篇

    ​ 这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求。...主要介绍 Form 表单的创建和 Form表单双向绑定(getFieldDecorator)。...后文中所提到的 Form 表单均为 Antd 3.x 中的 Form 组件,以下简称为 Form 表单。...1.3 validateFields 通常使用 validateFields 方法对我们的表单数据进行校验,查看 createBaseForm.js 文件中 validateFields 方法的实现后,...props.form 中,供开发者调用; 2、通过 getFieldDecorator 初始化表单的属性和值,达到双向绑定的效果; 3、校验通过,把数据存到 fieldsStore 中;校验不通过,把

    88420

    antd3.x中的form

    最近在维护公司的中台erp系统,项目中js库用的是react,ui库用的是antd。平时还是喜欢自己写css,刚开始还是有点不太习惯直接上ui库做项目,觉得用antd还是挺恶心的,主要是form。...在熟悉了以后发现这个库真棒。 react缺少类似vue的v-model这样的双向绑定机制, 所以在做表单的时候需要手动监听keyup,input,blur这一类的事件,会显得稍微麻烦一些。...antd官网 双向绑定:getFieldDecorator 用法:该方法用在表单的子域里面,通过this.props.form.getFieldDecorator(id, options)进行使用,其中...校验方法会校验在双向绑定getFieldDecorator中定义必填项required为true的所有字段 form.validateFields((err,value) => { if...() 提交数据 这个类似于,通过使用form的onSubmit事件,在提交的button上进行 用法如下 <Form labelCol={{ span: 5 }} wrapperCol={{ span:

    2.2K30

    在React Native中优雅的使用iconfont

    React Native中的iconfont 关于在React Native中使用iconfont,网上已有很多非常好的解决方案,用的最多的就是react-native-vector-icons , 这个库支持很多常用的...IconFont的使用原理 其实IconFont就是一些文字,通过在web上的使用,我们可以大概猜出使用方法: 指定字体集 把对应的16进制码当成文字写到文本中 在React Native中同样如此,我们可以通过...实际上,一个字体通常由数个表(table)构成,字体的信息存储在表中。...这里最好给每个icon定一个易于理解的名字,可以使用http://font.baidu.com/editor 使用自定义的IconFont 有了上面的摸索,要支持自己的IconFont并不难。...tag-svip:{icon('tag-svip')} ) } } 另外,在工程中

    15.2K40

    react-开发经验分享-form表单组件中封装一个单独的input

    在form表单中自定义封装一个input组件 如果不做处理 form表单提交时是获取不到这个自定义组件的数据的 这个坑对于新手来说 真的是个大坑 特别是对表单内的元素做提交不是很了解的人 用ant的ui...框架来说明吧 一个基础的表单 // ant表单组件 import { Form, Select, Input, Button } from 'antd'; const FormItem = Form.Item...并渲染到子元素Option里 那么我们就需要从新封装自定义这个原生的Select组件 // 把Select单独提取出来 import React, { Component } from 'react.../services/initialApi'; // 封装的后端接口请求 class SelectForm extends React.Component { constructor(props)...表单里 // 修改后的ant表单组件 import { Form, Select, Input, Button } from 'antd'; import SelectForm from '.

    2.9K40

    Form 表单在数栈的应用(上): 校验篇

    本文的重点为 Form 表单的校验及在数栈中的应用,偏向于应用总结与心得分享。...关于 Form 表单的其他内容,在 Form 表单在数栈的应用(下) 会和大家见面。...二、什么是 Form 相信大家在日常开发中已经对 Form 表单的使用已非常精通了,但非常值得一提的是,可能大家对“Form的定义是什么?什么时候我们会选择用 form ?”这个问题却往往回答不好。...首先是存在多层 form 嵌套的问题,也就是说同一个页面里可能还包含或嵌入多个 form 表单,类似问题的核心就在于如何在一个页面中拿到当前容器的 form 实例和嵌套的 form 示例。...5. table 与 form 的碰撞 (组件联动校验) 业务场景:数栈中其实存在各种与 form 联动的案例,笔者取 数据资产 (data-assets-front) 项目为例,在 table 中动态插入单条数据并实现可自定义校验内容

    2.2K20

    antd4与antd3Form表单设计区别

    核心 antd3思想:使用HOC(高阶组件)包裹form表单,HOC组件中的state存储所有的value值,定义设置值和获取值的方法 缺点:动一发牵全身,一个value值改变,因为这是顶级状态,所以所有的子组件都会因父组件的重新...render而render,浪费了性能 antd4思想:使用Context 包裹form表单,自定义一个store类,存储所有的表单value值,定义设置值和获取值得方法,因为不是组件内部状态,需要自己定义更新函数...,在每个Form.Item中定义forceUpdate()强制更新函数,当我们setValue值得时候,根据name值判断出要更新的Form.Item,可以调用该Item的更新函数更新,相比ant3节约了性能..., 会被react使用并拦截,这要用到React.forwardRef api, 把当前ref暴露给子组件,在Form lib中导出前...context中的方法 import React, { Component } from 'react' import { FormContext } from '.

    2K20

    Rc-form: 消失的“Ta”

    bug场景.png 小 H 发现表单确实无法提交,于是便在提交按钮的点击回调函数中打了断点想一探究竟,这一调试可把小 H 愁坏了:validateFields 的回调函数中存在 D 字段的必填校验错误。...首先,从提交按钮点击回调的调试中我们发现,C 字段的值在我们从 A1 切换到 A2 后会正常消失,而且 C 的校验函数在提交时也并不会被执行。为什么 C 会消失,而 D 不会?...不信邪的小 H 打开了官网,查到: “自定义或第三方的表单控件,也可以与 Form 组件一起使用。...在注册字段时,我们通过 getFieldDecorator 方法将 props 传入自定义表单控件上,其中有就有一个属性 ref,而且入参是一个函数 saveRef。...以上所有的内容总结成一段话就是:在使用表单自定义控件时,如果使用的是函数式自定义组件,需要通过 forwardRef 支持 ref。

    22010

    Form 表单在数栈的应用(上): 校验篇

    本文的重点为 Form 表单的校验及在数栈中的应用,偏向于应用总结与心得分享。...关于 Form 表单的其他内容,在 Form 表单在数栈的应用(下) 会和大家见面。...二、什么是 Form 相信大家在日常开发中已经对 Form 表单的使用已非常精通了,但非常值得一提的是,可能大家对“Form的定义是什么?什么时候我们会选择用 form ?”这个问题却往往回答不好。...首先是存在多层 form 嵌套的问题,也就是说同一个页面里可能还包含或嵌入多个 form 表单,类似问题的核心就在于如何在一个页面中拿到当前容器的 form 实例和嵌套的 form 示例。...5. table 与 form 的碰撞 (组件联动校验) 业务场景:数栈中其实存在各种与 form 联动的案例,笔者取 数据资产 (data-assets-front) 项目为例,在 table 中动态插入单条数据并实现可自定义校验内容

    1.3K20

    详细剖析|袋鼠云数栈前端框架Antd 3.x 升级 4.x 的踩坑之路

    3.x 中,表单中任意一项的修改,都会导致 Form.create () 包裹的表单重新渲染,造成性能消耗; 在 4.x 中,Form.create () 不再使用。...在 4.x 中,不在需要 getFieldDecorator 对 Item 进行包裹。...注意以下问题: ・将之前写在 getFieldDecorator 中的 name/rules 等移到属性中; ・初始化在 form 中处理,避免同名字段冲突问题; ・关于表单联动的问题,官方提供了 shouldUpdate...通过这次 UI 升级和 antd 升级之后,Form 表单在数栈中的应用发生了较大的变化,从老版本的 label/component 横向排版改为了纵向改版,在横向空间不⾜的情况下,使⽤上下结构能有效提...antd3.0 的时候,我们采用 user.userName 能够读到嵌套的属性。

    4.1K30

    基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能

    笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用即可。...一、首先,是前端React页面代码,这类搜索框,一般都是放在Form表单当中,然后使用有前缀下拉框选项的Input组件,这类模式的组件是在Input组件当中实现一个addonBefore属性即可,如下代码...稍微解释一下这段代码,假如下拉框是以“学生姓名”为维度来搜索,那么表单的getFieldDecorator('condition')属性值即“name”,也就是values.condition==“name...在表单当中,输入框的属性label是getFieldDecorator('searchUser')。...Mybatis plus的ORM框架,可以直接使用lambda表达式的搜索条件进行,因为搜索条件搜索,故而,需要用like的模糊搜索,搜索条件是name+"%",没有两边都用"%",是因为若第一个模糊条件有索引的话

    1.3K31

    快来使用 React-Hook-Form 搭建强大的React表单

    没有人喜欢创建和重新创建带有验证的复杂表单,包括React开发人员。 在React中构建表单时,必须使用一个表单库,该库提供了许多方便的工具,而且不需要太多代码。...让我们看看如何在你自己的项目中使用 React-hook-form 来为你的React应用程序构建丰富的、有特色的表单。 安装 让我们来讨论一个典型的用例:一个用户注册到我们的应用程序。...我们可以从 useForm 中获取一个 errors对象,而不仅仅是不提交表单。 就像我们在 onSubmit 中获得的数据函数一样,errors 包含对应于每个输入名称的属性,如果它有错误的话。...例如,在某些情况下,您希望它在onSubmit中创建一个不同的错误或清除一个错误,就可以使用这些方法。...总结 我希望本文向您展示了如何在React应用程序中更容易地创建功能性表单。 还有很多与react-hook形式相关的特性我没有在这里介绍。点击这里,官方文档应该涵盖你能想到的任何用例。

    3.7K21
    领券