首页
学习
活动
专区
工具
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批流统一数据同步工具,既可以采集静态数据,也可以采集实时变化数据

99910
  • 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

    antd3.xform

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

    2.2K30

    最熟悉陌生人 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 表单。...1.3 validateFields 通常使用 validateFields 方法对我们表单数据进行校验,查看 createBaseForm.js 文件 validateFields 方法实现后,...props.form ,供开发者调用; 2、通过 getFieldDecorator 初始化表单属性和值,达到双向绑定效果; 3、校验通过,把数据存到 fieldsStore ;校验不通过,把

    87120

    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 ;校验不通过,

    86310

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

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

    2.2K20

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

    form表单自定义封装一个input组件 如果不做处理 form表单提交时是获取不到这个自定义组件数据 这个坑对于新手来说 真的是个大坑 特别是对表单元素做提交不是很了解的人 用antui...框架来说明吧 一个基础表单 // 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

    React Native优雅使用iconfont

    React Nativeiconfont 关于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.1K40

    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 '.

    1.9K20

    详细剖析|袋鼠云数栈前端框架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

    Rc-form: 消失“Ta”

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

    20310

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

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

    1.3K20

    React 折腾记 - (6) 基于React 16.6 + Antd 3.10.7封装一个声明式查询组件

    前言 最近把新后台系统写好了..用是上篇文章技术栈(mobx+react16); 但是感觉mobx没有想象好用,看到umi 2.x了.就着手又开始重构了......---- 抽离思路及实现 思路 合并props传递值,尽可能减少传递东西(组件内部实现默认值合并),把渲染子组件通过遍历json去实现; 整个查询区域用antd表单组件,聚合所有表单数据(自动双向绑定...内部state默认初始化都为空[antd对于日期控件使用null来置空],外部初始化可以用getFieldDecoratorinitialValue,已经暴露 ---- 实现功能 支持props...antd要求格式一致,除了个别用来判断或者渲染子组件, 字段解释: ctype(controller-type:控件类型) attr(控件支持属性) field(受控表单控件配置项) searchItem...(若是用ts小伙伴,运行时类型推断比这个强大多,还不会打包冗余代码) 没发布npm , 只是提供我写思路,对您有没有帮助,见仁见智 依赖moment,antd 可以自行拓展点 比如垂直展示 比如表单校验

    2.6K10
    领券