记录Ant Design中getFieldDecorator方法的特殊的一个用法

了解Ant Design表单的小伙伴都知道,getFieldDecorator在大部分情况下是用来绑定一个控件的,即像如下用法:

        {getFieldDecorator(`name`, {})(
<Input/>
)}

在项目开发过程中,我曾遇到这么一个需求:不定量的添加人物图片及相应的名字,且添加图片和输入框的控件随用户点击而增加(这里只需用state记录控件数量,由点击事件改变这个state即可),再简单来说,不是一次性上传多张图片,而是一张图片,一个名字的方式来添加。

在开发过程中,我发现,如果用上述方法去绑定控件,那么getFieldValue("name")只会保存最后一次输入的值,那么这样肯定不符合需求。解决方案如下:

方案1:

        {getFieldDecorator(`name${k}`, {})(
<Input/>
)}

其中k是索引,因为要动态添加控件,所以会使用map遍历这个页面的state,相当于去监听这个state,k即使遍历时的下标,这样在控制台打印出来的值会是这样:

name0:"111"
name1:"222"
image0"https://ifp-test.oss-cn-shenzhen.aliyuncs.com"
image1:"https//ifp-test..."

可以看到,这中方法依旧是以一个控件绑定一个key,通过循环可以获取所有控件的值。

方案2:

        {getFieldDecorator(`name[${k}]`, {})(
<Input/>
)}

细心的小伙伴可以看到,key值的字符串我用方括号将索引包了起来,看起来像个数组。没错!就是数组,这样说来可能还不能理解,那么我们看看打印出来的结果:

name:["111","222"]
image:["http://...","http://..."]

看,多么神奇,关键是在使用 getFieldDecorator(`name[${k}]`)的时候,方括号和其他字符串一样,不会变色!!让人感觉和普通字符一样,但Ant Design就是这么神奇,把他当数组处理了,不知道这是不是bug,反正这种方法比方法1要好,可以一次性获取所有的值,用下标索引就可以匹配图片和文字。

Ant Design中getFieldDecorator方法的特殊用法(小bug)的更多相关文章

  1. 小娱乐一下,fileInfo中的Name ,FullName的用法小BUG

    var filePath = new FileInfo(@"c:\text(sdf\123).txt"); Console.WriteLine(filePath.Name); Co ...

  2. Ant Design中根据用户交互展示不同的标签

    Ant Design中根据用户交互展示不同的标签 Ant Design使用的是React框架,那么我们先看代码: <Fragment> <a onClick={() => th ...

  3. 关于Jquery中ajax方法data参数用法的总结

    data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQ ...

  4. java中equals方法和==的用法

    java中equals方法的用法以及==的用法(参考一)equals 方法是 java.lang.Object 类的方法.两种用法说明:(1对于字符串变量来说,使用“==”和“equals()”方法比 ...

  5. ant design 中实现表格头部可删除和添加

    我是用antd pro做一个项目.有一个小需求是表格头部栏可操作.具体是表头的每一项都带一个"x"按钮,当不想展示这一栏的时候,直接点"x",这一栏就不展示了. ...

  6. 【转】关于Jquery中ajax方法data参数用法的总结

    $.ajax({ type: "POST", url: "some.php", data: "name=John&location=Bosto ...

  7. Ant Design中的Form组件

    1. 使用Form.create()包裹过的组件可以获取到this.props.form属性 Form.create()(Comp) 2. getFieldDecorator() // 在表单中的使用 ...

  8. ant design 中的 Select 组件常规写法

    1.代码 import { Select, Spin } from 'antd'; const Option = Select.Option; <Select allowClear showSe ...

  9. 空 Maven项目转成 Web项目 & SpringMVC调用其他 Module中的方法可能会遇到的小问题

    SpringMVC调用其他 模块内的方法的 坑 下次别在阴沟里翻船啦.. 一共花费 4个小时,解决项目中的这个问题 OMG 1. 首先是 Maven新建工程 一般使用 Maven都是先创建 空工程 当 ...

随机推荐

  1. centos安装hdp

    1. 准备6和7的 YUM源包 1.1 centos 下载后解压到同一个目录 http://mirrors.163.com/centos/6/isos/x86_64/CentOS-6.9-x86_64 ...

  2. 【codeforces 520B】Two Buttons

    [题目链接]:http://codeforces.com/contest/520/problem/B [题意] 给你一个数n; 对它进行乘2操作,或者是-1操作; 然后问你到达m需要的步骤数; [题解 ...

  3. C#面向对象--命名空间与类库

    1.命名空间 在源代码文件开头使用using语句引用 命名空间,就可以直接使用其中的类而不再需要指明其所属的命名空间. .NET Framework使用命名空间来管理所有的类. 类的修饰符:   pu ...

  4. Oracle的dual是什么东西啊

    原文:https://zhidao.baidu.com/question/170487574.html?fr=iks&word=dual&ie=gbk Oracle的dual是什么东西 ...

  5. 排他网关(ExclusiveGateWay)

    网关(ExclusiveGateWay) 作者:邓家海2018年3月11日 00:13:25 情景:某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时候, ...

  6. 原生js实现计时器

    https://www.cnblogs.com/sandraryan/ 点击开始计时,可以计次,暂停.点了暂停可以继续计时,计次,点击重置清空. <!DOCTYPE html> <h ...

  7. codeforces 1214

    D 比赛的时候居然看漏了条件... 若在(x, y)格子,那么只能移动到(x+1, y)或(x, y+1) 这样的话就好做了,直接dp,然后统计每一种路径长度经过的点数. #include<cs ...

  8. 教你怎么让vi和vim显示行数

    首先我们来看看没有行号是多么难看. 2 再来看看有行号后的效果. 3 设置行号很简单. 我们要到命令模式下,输入set number :set number 按下回车 来看看效果 4 那么怎么关闭行号 ...

  9. Python--day49--ORM框架SQLAlchemy之relationship的使用(有时间要从新看,这里状态不好,没有仔细听)

    小贴士:   迭代器:只有在循环的时候才一个一个往外拿 relationship

  10. P1027 三角形的周长

    题目描述 有n根棍子,棍子i的长度为Ai.现在想要从中选出3根棍子组成周长尽可能长的三角形.请输出最大周长,若无法组成三角形则输出0. 输入格式 第一行是一个正整数n(3<=n<=1000 ...