antd FormItem嵌套FormItem的适用场景
需求:表单中需要在item后面添加文字备注,如果不使用FormItem嵌套FormItem时,编辑操作的时候会出现回填不成功的问题。
当不使用formItem嵌套的时候:这时候点击编辑的时候,数据获取到了但是没有在页面中回填,原因是<FormItem></FormItem>中的根元素只能是一个表单控件标签,不能是<>或者是<div>等。
const formData = [{id: 'name',label: '广告名称',rules: [{ required: true, message:'请输入' }],children: <><Input allowClear placeholder='请输入' /><span>表单项的备注说明--广告名称</span></>,},{id: 'position',label: '广告位置',rules: [{ required: true, message:'请选择' }],children: <><Selectplaceholder='请选择'onChange={(value) => {setPosition(value);form.setFieldsValue({position: value,});}}>{positionOption}</Select><span>表单项的备注说明--广告位置</span></>,},
]
<Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>{formData.map((item, index) => {const key = `${index}_formDataItem`;return (<Col key={key} xs={24} sm={24} md={12} lg={8} xl={6}><FormItem label={item.label} name={item.id}>{item.children}</FormItem></Col>);})}
</Row>
这时候就该使用<FormItem></FormItem>嵌套解决问题,代码如下:
const formData = [{id: 'name',label: '广告名称',rules: [{ required: true, message: '请输入' }],remark: <span>备注说明--广告名称</span>,children: <Input allowClear placeholder='请输入' />,},{id: 'position',label: '广告位置',rules: [{ required: true, message: '请选择' }],remark: <span>备注说明--广告位置</span>,children: (<Selectplaceholder='请选择'onChange={(value) => {setPosition(value);form.setFieldsValue({position: value,});}}>{positionOption}</Select>),},
]
<Form form={form} labelCol={{ span: 2 }} wrapperCol={{ span: 16 }}>{formData.map(({ id, label, rules, hidden, children, remark }) => {return (<FormItemkey={id}label={label}hidden={hidden}required={id !== 'remarks' && true} // 手动添加required 属性><div className="flex items-center"><Col span={id === 'image' ? 4 : 18} className="mr-4"><FormItem name={id} rules={rules} noStyle>{children}</FormItem></Col><span>{remark}</span></div></FormItem>);})}</Form>
这时候就解决了编辑时回填的问题。
这时候又会出现另一个问题就是:“必填项的红色*在页面中没有出现,也就是<FormItem rules={rules}>绑定rules后红色*必填提示没有生效”,这时解决这个问题的办法就是在<FromItem>标签中手动添加 required属性。
antd FormItem嵌套FormItem的适用场景相关推荐
- flex form formitem
form.formite 遍历 [color=blue]mxml:[/color] <mx:Form id="myform"> <mx:FormItem labe ...
- 怎么才能让Antd中的嵌套子表格渲染不一样的内容
目录 一.子表格与父表格的数据存储在一起 方式一:Function(record, index, indent, expanded):VNode 方式二:#expandedRowRender=&quo ...
- Vue笔记(五)—— Vue render渲染/组件嵌套之iView官网案例改写Table表格组件及Modal弹窗/对话框/模态框组件内容自定义详解
缺乏耐心的读者请主要关注标红部分! 因部分内容自动转为代码格式,所以代码部分请主要关注注释部分! 1.Table表格组件内容自定义: 官网Table表格组件部分示例代码: columns12: [{t ...
- vue-router之嵌套路由
❤记在前面 "自己"这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解自己. 跟很强的东西.可怕的东西.水准很高的东西相碰撞,才知道"自己"是什么,这才是 ...
- vue嵌套路由,二级路由使用介绍
vue-router 嵌套路由,二级子路由 项目中如果都是一级路由,路由管理会有些乱.嵌套路由是路由中包含路由的意思,组件中可以有自己的路由导航和路由容器(router-link.router-vie ...
- Antd源码浅析(二)InputNumber组件 一
前言 上篇我们讲了Icon组件,Icon组件是Antd源码库中实现比较简单的组件,适合大家入门,这篇文章主要和大家一起分析一下数字输入框组件,即InputNumber,难度适中,但蕴含的Antd里较为 ...
- WRF系列教程3:嵌套方式总结
WRF使用基本上会涉及到嵌套,主要原因是:WRF使用的是等经纬网格,不具备局地加密的能力,全场都使用高分辨率网格则会耗费大量的计算资源,无法满足时效性的要求. 使用嵌套的加密方式能够实现在关键区域采取 ...
- Python中的If嵌套讲解(语法、实例、执行流程)
If就是if条件语句,嵌套的意思可以理解为在生活当中有种玩具叫做俄罗斯套娃,这个套娃呢就是大的套娃里面有小的娃,小娃里面有更小的娃,就这样一层一层的套下去.在编程语言当中,if嵌套指代的意思是一个大的 ...
- java多层if else嵌套语句的优化思路,滑动验证码防刷功能开发
阿里巴巴java开发手册里面,在控制语句部分有一个推荐,如下: [推荐]表达异常的分支时,少用 if-else 方式,这种方式可以改写成: if (condition) { ...return obj ...
- C语言 结构体 联合体 | 嵌套使用
一.简单的实例分析 题目:获取0x12345678各个字节. 答案: //方法一: #include <stdio.h>typedef unsigned int uint32_t; typ ...
最新文章
- Spring AOP Capability and Goal
- Flutter Dart 安装在window系统
- leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
- windows 安装 zabbix agent 客户端
- mysql的with rollup
- 111... 南邮NOJ 1079
- 表情识别项目综述论文阅读总结
- matlab h系统控制器,Matlab的H_inf鲁棒控制器的设计.pdf
- 腾达f3虚拟服务器,腾达(Tenda)F3路由器用手机怎么设置?
- NBA运动员球员数据分析
- 2010中国互联网十大搞笑段子,笑后请深思
- 基于可编程图形处理器的骨骼动画算法及其比较
- 学习C语言的相关网站(C学习资料)
- 海雀口中美食遭贪吃海鸥打劫
- java 月亮升起,描写月亮升起的句子
- 使用TextCNN+Word2Vec实现简历文本分类(一)
- 无线串口NRF24L01的使用与调试
- iPhone14 刚发布就降价,全网疯抢!!!
- Unity3D安卓导出包加密学习--加密Assembly-CSharp.dll
- win10安装autocad 2013出现command line option syntax error