当前位置: 首页 > news >正文

如何用源代码做网站烟台企业自助建站系统

如何用源代码做网站,烟台企业自助建站系统,济南网络免费推广网站,电子商务主要指什么项目需求: 在使用ant design form动态增减表单项Form.List时,Form.List中有多组表单项,一组中的最后一个表单项的校验规则是动态的,该组为最后一组时,最后一个表单项是非必填项,其他时候为必填项。假设动态…

        项目需求:

        在使用ant design form动态增减表单项Form.List时,Form.List中有多组表单项,一组中的最后一个表单项的校验规则是动态的,该组为最后一组时,最后一个表单项是非必填项,其他时候为必填项。假设动态增加了两组表单项,均为填写内容,在必填项校验被触发后,删除了第二组表单项,此时仅剩一组表单项,想要最后一个表单项的校验状态不再显示必填项提示。如下图所示:

想要的效果,最后一个表单项不显示必填项提示:       

        解决思路:

        使用动态校验规则,获取到最后一组的索引,使用form.validateFields重新触发校验规则。

        代码如下:

import React, { useState } from 'react';
import { Form } from 'antd';const App = () => {const [lastIndex, setLastIndex] = useState(false); // form表单最后一组数据的索引const [form] = Form.useForm();useEffect(() => {// 减少表单项时,重新触发表单验证,使form最后一组中最后一个表单项的验证状态不再显示必填项提示form.validateFields([['configs', lastIndex, 'lastFormOption']]);}, [lastIndex, form]);return (<Form form={form} initialValues={{ configs: [{}] }} >……<Form.List name="configs">{(fields, { add, remove }) => (<>{fields.map(({ key, name, ...restField }, index) => {// 这里获取最后一组表单项索引setLastIndex(fields.length - 1);return (<Rowkey={key}>……<Col span={5}><Form.Item{...restField}name={[name, 'lastFormOption']}rules={[{required: (fields.length - 1) == index ? false : true,message: '请选择……',},]}><Selectoptions={options}disabled={(fields.length - 1) == index}placeholder="最后一条自定义条件为非必填项"/></Form.Item></Col><Col span={2}><MinusCircleOutlined onClick={() => remove(name)} /></Col></Row>)})}<Form.Item ><Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>新增</Button></Form.Item></>)}</Form.List></Form>);
};
export default App;

        上述解决方式中,如果App作为一个子组件用到了ForwardRef,会出现下面的告警:

        Warning: Cannot update a component (`ForwardRef(AddRemoveFormItems)`) while rendering a different component (`Field`). To locate the bad setState() call inside `Field`, follow the stack trace as described……

        解决方案:去掉setLastIndex(fields.length - 1);等相关代码,将规则校验放在删除表单组的操作中。代码如下:

<MinusCircleOutlined style={{ fontSize: 24 }} onClick={() => {remove(name);form.validateFields();
}} />

http://www.yayakq.cn/news/121552/

相关文章:

  • 网站开发新技术网站列表页怎么做的
  • 求个网站或者软件wap网站开发
  • 东莞专业网站推广工具滨州网站建设招聘
  • 给别人做网站的话术商务网页设计与制作软件
  • 肇庆市建设企业网站怎么样搜索引擎营销的概念
  • 网站建设后台管理怎么进入建立一个做笔记的网站
  • 专业的标志设计公司一个网站两个域名 seo
  • 网站建设文献综述模板网页空间的利用要
  • 深圳电商网络网站建设网站建设技术网
  • 潍坊恒信建设集团网站百度广告价格
  • 网上帮别人做网站书法网站建站目标
  • 宁波seo网站排名优化公司微信网页版下载安装
  • 网站做信息流企业网络组网设计
  • 专业公司做网站仿虎嗅网 wordpress
  • 定州网站设计东莞seo建站投放
  • 做网站优化的话术wordpress 外部页面
  • .tech 域名 网站wordpress分类模板设置
  • 厦门网站建设模板wordpress设置文章显示图片
  • 南宁网站制作定制企业文化形象墙设计
  • 东莞网站建设哪里好村级网站建设 不断增强
  • 网站自动化采集wordpress 网易相册
  • 深圳网站制作建设世界互联网公司排名
  • 如何做营销型网站做模具的网站
  • 长沙网站开发培训网站开发后端指什么
  • 做网站收费 知乎视频网站很难建设吗
  • 潍坊网站建设哪家便宜网页制作动态模板
  • 徐州市住房建设局网站网站建设一般多少钱官网
  • 深圳网站开发赣州人才网招聘网
  • 织梦网站程序模板下载举报网站建设工作总结
  • 华为网站建设wordpress add_theme_support