记录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. hdu 2225 The nearest fraction (数学题)

    Problem - 2225 一道简单数学题,要求求出一个分母不超过m的最接近sqrt(n)的分数. 做法就是暴力枚举,注意中间过程不能用浮点数比较,误差要求比较高. 代码如下: #include & ...

  2. 【Vue】基于nodejs的vue项目打包编译部署

    一·项目编译 1·进入项目目录下的终端执行命令 npm run build 正常情况如下图,如遇到错误不会编译成功,且编译后的html文件不能正常渲染. 2·编译完成后进入项目下的dist目录运行生成 ...

  3. GPU选型

    1-基本概念 显存带宽     是指显示芯片与显存之间的数据传输速率,它以字节/秒为单位.显存带宽是决定显卡性能和速度最重要的因素之一. 2-常见GPU性能参数 GPU型号 单卡显存 cuda 计算能 ...

  4. SuperSocket 中的日志系统

    当 SuperSocket boostrap 启动时,日志系统将会自动启动. 所以你无须创建自己的日志工具,最好直接使用SuperSocket内置的日志功能. SuperSocket 默认使用log4 ...

  5. 在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作

    CentOS 7.3 这部分以在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作. 登录 ECS 管理控制台,确认实例所在安全组 ...

  6. poj 3295

    题目意思就是计算表达式的值,如果所有情况下表达式为真就输出“tautology”,否则输出“not”. p, q, r, s, and t,每个人有两种情况,综合起来一共有32种情况,枚举所有情况最后 ...

  7. [转]ECMAScript 2016,2017 和 2018 中所有新功能的示例

    很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...

  8. Vue的路由Router之导航钩子和元数据及匹配

    一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.vue-router.js 打开此链接  h ...

  9. vue——父子传值

    转载地址:https://blog.csdn.net/xr510002594/article/details/83304141

  10. Vue 小实例 跑马灯效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...