Ant Design 表单中getFieldDecorator、getFieldValue、setFieldValue用法

一、getFieldDecorator

getFieldDecorator是一个方法,这个方法接收两个参数,第一个是表单的字段对象,第二个是验证规则。这个方法本身返回一个方法,需要将需要获取值的标签包裹进去。

<From>
<FormItem>
//JS代码书写时需要用 { } 包裹起来,不能直接写在代码块中
{
getFieldDecorator('userName',{
initialValue:'Jack',
rules:[]
})(
<Input placeholder='请输入用户名'/>
)
}
</FormItem>
</From>

第一个参数是用户自定义的、用于识别该控件的变量名,这样便于在获取或设置该控件的值。

2019.3.12补充:值得注意的是,getFieldDecorator是一个非常智能的方法,它可以获得自定义组件的value值,在提交表单时会很方便。其次,initialValue的值会覆盖子组件中的placeHolder,如果子组件是下拉框,也会根据initialValue的值来匹配自己的value,并显示相应的值,可以说非常智能了。

二、getFieldValue

  handleSubmit = e => {
const { dispatch } = this.props;
e.preventDefault();
var date_juban = this.props.form.getFieldValue('date_juban');
this.state.open_time_start = date_juban[0];
this.state.open_time_end = date_juban[1];
if (this.refs.pics.state.fileList.length > 0)
this.state.image = this.refs.pics.state.fileList[0].response.url;
this.state.location_longitude = this.props.form.getFieldValue('location_longitude');
this.state.location_latitude = this.props.form.getFieldValue('location_latitude');
}

在提交表单或是与后端交互时,如果需要一个控件的值,那么就用this.props.form.getFieldValue('变量名')的方式进行获取,注意:‘变量名’这个参数只能由getFieldDecorator所设定的。

注意:getFieldValue不能获取没有使用getFieldDecorator绑定的控件(即:如果控件值标注了id属性,用这个方法无效)。应使用document.getElementById("id名").value的方式进行获取值。

三、setFieldValue

<FormItem {...formItemLayout} label={<span>地图</span>}>
<AMapModule
lng={''}
lat={''}
address={getFieldValue('position')}
getMapPoint={point => {
setFieldsValue({
location_latitude: point.lat,
location_longitude: point.lng,
});
}}
getMapAddress={address => {
setFieldsValue({
position: address,
});
}}
/>
</FormItem>

上述代码是我在表单中截取的一部分,该控件是一个地图控件。用户点击地图中的某个位置,会在同页面的input框中实时显示经度、维度、位置描述。这三个input框的id分别是location_latitude、location_longitude、position。

Ant Design 表单中getFieldDecorator、getFieldValue、setFieldValue用法的更多相关文章

  1. 如何实现Ant design表单组件封装?

    目标:自己实现一个antd表单组件 先看下Ant Design官网上给出的表单组件用法: import React, { Component } from 'react' import { Form, ...

  2. 002-pro ant design 表单基本使用、state赋值数据父子传输

    一.表单元素操作事项 1.form 默认在prop中存在:this.props.form,直接使用即可 2.重置:this.props.form.resetFields(); 3.赋值:form.se ...

  3. ant Design表单验证笔记

    1.pattern正则验证 <Col md={12} sm={24}> <FormItem {...formItemLayout} label="班数"> ...

  4. Ant Design中getFieldDecorator方法的特殊用法(小bug)

    记录Ant Design中getFieldDecorator方法的特殊的一个用法 了解Ant Design表单的小伙伴都知道,getFieldDecorator在大部分情况下是用来绑定一个控件的,即像 ...

  5. React 项目 ant design 的 CheckboxGroup 验证

    使用 ant design 提供的 getFieldDecorator 进行验证 一般开始使用默认选中 <FormItem> {getFieldDecorator('checkProtoc ...

  6. 实现Ant Design 自定义表单组件

    Ant Design 组件提供了Input,InputNumber,Radio,Select,uplod等表单组件,但实际开发中这是不能满足需求,同时我们希望可以继续使用Form提供的验证和提示等方法 ...

  7. ant design pro如何实现分步表单时,返回上一步值依然被保存

    首先,分步表单ant design pro支持,看官方Demo即可,那么如何实现如题,关键在于设置initialValue {getFieldDecorator('name', { initialVa ...

  8. ant design pro 表单

    1.Input Enter事件 <input onKeyUp={this.onKeyUp} onPressEnter={this.enter} /> onKeyUp = (e) => ...

  9. Ant Design Pro中Transfer穿梭框的实际用法(与后端交互)

    Ant Design Pro中Transfer穿梭框的实际用法(与后端交互) 该控件的属性以及属性的作用在ADP的官方文档中都有介绍,但没有讲如何与后端交互,本文旨在讲解该控件与后端的交互. Ant ...

随机推荐

  1. Educational Codeforces Round 10 A B题、

    A. Gabriel and Caterpillar 题意: 就是说  一个小孩子去观察毛毛虫从 h1的地方爬到h2的地方.毛毛虫从10点爬到22点.每小时爬的距离是a, 晚上22点到第二天早上10点 ...

  2. Date和Calendar

    处理日期,时间: 大部分的方法已过时,不推荐使用,但是你使用过时的方法也不会报错. Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). Date(long date) ...

  3. linux 延后执行

    设备驱动常常需要延后一段时间执行一个特定片段的代码, 常常允许硬件完成某个任务. 在这一节我们涉及许多不同的技术来获得延后. 每种情况的环境决定了使用哪种技术最好; 我们全都仔细检查它们, 并且指出每 ...

  4. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(5)之业务层

    业务层主要负责定义业务逻辑(规则.工作流.数据完整性等),接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用. 在我们 ...

  5. 响应式自适应布局代码,rem布局

    响应式自适应布局代码 首先是先设置根字体大小,PC端一般是16px为根字体,移动端会有不同的,根据情况来设置 js部分 document.querySelector('html').style.fon ...

  6. react + webpack 多页面搭建

    一.利用 creat-react-app 新建一个react单页面应用. cnpm i -g create-react-app create-react-app demo cd demo npm st ...

  7. 2018-5-19-创建不带BOM-的UTF8

    title author date CreateTime categories 创建不带BOM 的UTF8 lindexi 2018-05-19 14:11:33 +0800 2018-2-13 17 ...

  8. Linux 内核Ksets 对象

    很多情况, 一个 kset 看来象一个 kobj_type 结构的扩展; 一个 kset 是一个嵌入到相 同类型结构的 kobject 的集合. 但是, 虽然 struct kobj_type 关注的 ...

  9. Linux 内核注册一个 USB 驱动

    所有 USB 驱动必须创建的主要结构是 struct usb_driver. 这个结构必须被 USB 驱动填 充并且包含多个函数回调和变量, 来向 USB 核心代码描述 USB 驱动: struct ...

  10. APK签名替换检测

    APK二次打包的危害 APK二次打包是Android应用安全风险中的一部分, 一般是通过反编译工具向应用中插入广告代码与相关配置,再在第三方应用市场.论坛发布.打包党对移动App带来的危害有以下几种: ...