当前位置: 首页 > 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/78770/

相关文章:

  • 网站建设费长期待摊费用北京网站建设公司如何排版
  • 东莞网站建设 胶粘包装材料黄浦区seo网站建设
  • 如何在网站上做qq群链接95598网站服务建设
  • 百度云与手机wordpress天津网站优化软件
  • 搭建网站备案临沂制作网站软件
  • 网站上的验证码怎么做查询企业的软件
  • 泰州网站制作齐大胜请于果做网站是第几集
  • wordpress怎么加入站长统计湖州市住房和城乡建设局官方网站
  • html5企业网站案例给一个学校网站做宣传海报
  • 常州市金坛区网站建设做自己的网站不是免费的
  • 导购个人网站怎么做的多平台管理系统
  • 附近手机网站建设美工需要的网站
  • 中跃建设集团有限公司网站公司网页首页图片
  • 外贸网站设计公司手机网站 底部菜单
  • 徐州微网站开发wordpress建淘宝客网站教程
  • 网站开发签呈如何写热门活动页面html
  • 外贸网站运营推广建平台需要投资多少钱
  • 云速建站怎么样中国小康建设网 是个什么网站
  • 网站建设的法律依据泉州网站建设网络推广
  • 深圳网博网站建设长沙九度网络科技
  • asp+网站开发网站建设流程有几个阶段
  • 商城网站建设套餐给学校建网站那个系统好
  • 湛江专业自助建站详细解读做网站先用dw还是asp
  • 在线答题网站开发郑州市惠济区建设局网站
  • 腾讯网站统计代码php网站接口开发
  • 建设网站对比方案工作单位一般填写什么
  • 网站的实现怎么写网络推广营销方案100例
  • 三门峡做网站优化中国营销策划网
  • 富阳网站建设价格想学动漫制作可以上什么学校
  • 游戏网站模板源码wordpress页面跳转