ProFrom套EditableProTable如何进行表单验证

2023-11-15

在这里插入图片描述

import React, { useRef } from 'react'
import { Button } from 'antd'
import { BetaSchemaForm, DrawerForm, ProCard } from '@ant-design/pro-components'
import Specification from './specification'

export default () => {
  const formRef = useRef() // 新增/编辑表单ref
  const specificationRef = useRef() // 商品规格的ref

  const drawerForm = r => (
    // 新增/编辑 弹框
    <DrawerForm
      formRef={formRef}
      title="添加"
      trigger={r ? <a>编辑</a> : <Button type="primary">添加</Button>}
      drawerProps={{ destroyOnClose: true }}
      onOpenChange={v => {}}
      onFinish={async v => {}}
    >
      <ProCard title="基本信息" bordered headerBordered collapsible>
        <BetaSchemaForm
          layoutType="Embed"
          columns={[
            {
              name: 'specification',
              dataIndex: 'specification',
              title: '商品规格',
              formItemProps: {
                rules: [
                  { required: true, message: '请添加商品规格' },
                  {
                    validator: async () => {
                      return new Promise((res, rej) => {
                        specificationRef.current
                          .validateFields()
                          .then(() => {
                            res()
                          })
                          .catch(() => {
                            rej()
                          })
                      })
                    },
                    message: '请将商品规格补充完整'
                  }
                ]
              },
              renderFormItem: () => <Specification ref={specificationRef} />
            }
          ]}
        />
      </ProCard>
    </DrawerForm>
  )

  return <div>{drawerForm(false)}</div>
}
import { EditableProTable } from '@ant-design/pro-components'
import React, { useState, useEffect, forwardRef } from 'react'

export default forwardRef(({ value, onChange }, ref) => {
  const [dataSource, setDataSource] = useState([])
  useEffect(() => {
    onChange(dataSource)
  }, [dataSource])
  const columns = [
    {
      title: '规格名称',
      dataIndex: 'title',
      width: 150,
      formItemProps: {
        rules: [
          {
            required: true,
            whitespace: true,
            message: '此项是必填项'
          }
        ]
      }
    },
    {
      title: '操作',
      valueType: 'option',
      width: 80,
      render: () => {
        return null
      }
    }
  ]

  return (
    <EditableProTable
      columns={columns}
      rowKey="id"
      value={value}
      onChange={setDataSource}
      recordCreatorProps={{
        newRecordType: 'dataSource',
        record: () => ({
          id: Date.now()
        })
      }}
      editableFormRef={ref}
      editable={{
        type: 'multiple',
        keys: value?.map(it => it?.id),
        actionRender: (row, config, defaultDoms) => {
          return [defaultDoms.delete]
        },
        onValuesChange: (record, recordList) => {
          setDataSource(recordList)
        }
      }}
    />
  )
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ProFrom套EditableProTable如何进行表单验证 的相关文章

随机推荐

  • ubuntu切换国内镜像源,加速apt-get下载速度

    ubuntu切换国内镜像源 加速apt get下载速度 如题 使用apt get命令安装包时 由于系统自带的下载源在国外服务器上 故下载速度较慢 若切换为国内源 将显著提升下载速度 下列是设置步骤 STEP 1 查找适合自己系统的镜像源配置
  • 深入理解线程的原理和用法

    Java中的线程 程序 进程和线程 1程序是一段静态的代码 它是应用程序执行的蓝本 2进程是程序的一次动态执行过程 它对应了从代码加载 执行到执行完毕的一个完整过程 作为蓝本的程序可以被多次加载到系统的不同内存区域分别执行 形成不同的进程
  • 某某analysis参数算法分析

    作者 TheWeiJun 来源 逆向与爬虫的故事 今天给大家带来一个干货分享 由于想要查看某些APP的详细信息 需要通过APP名称去某麦网站进行搜索查看 而整个过程中涉及到逆向分析 为了方便大家学习 本次完整流程记录如下 目录 一 确定要获
  • java可变参数函数_Java 变参函数的实现

    Java的变参函数实现实际上参数是一个数组 其简单用法如下 public class variableParamTest private static void variableParam Object args for Object v
  • vue实现任务周期cron表达式选择组件

    vue cron表达式 Cron表达式的详细用法 vue cron 基于vue的cron表达式组件 项目开发过程中遇到了需要在from表单输入cron表达式的情况 但对cron表达式没有深刻了解的用户来说 输入一个正确的cron表达式有些困
  • 实现文件上传进度条及解决request.upload.addEventListener in not a function问题

    使用axios上传文件时需要进度条 可通过监听axios的onUploadProgress获取当前文件上传进度 进度条可以用antd的Progress 实现过程中出现问题request upload addEventListener in
  • 关于Hadoop分布式计算:多个Map分布在不同节点上执行

    1 背景 问题 学习Hadoop已经快一年了 也是似懂非懂的样子 由于项目的原因 再次启动Hadoop 一直以为这个很简单就能够实现多个机器一起完成一个任务 其实并不然 在实验过程中 发现Map的数量并不能通过设置 mapreduce jo
  • 一文详解APS能做什么?不能做什么?

    APS Advanced Planning Scheduling 被翻译成 高级计划排程 我觉得似乎advance用在这里应该是 进阶 的意思 就是在原来手工作业或者MRP MRPII基础进了一步 高级 总觉得是高大上 而APS就是一个辅助
  • Maya删除被锁定的节点

    问题描述 在Maya中如果节点被锁定 则无法被修改或删除 这种情况下需要通过Maya的命令对节点的状态进行修改 解决方法 首先选中被锁定的节点 然后在Python脚本编辑器中执行以下的代码 import maya cmds as mc li
  • 运用@Transactional,自己抛出异常时不会回滚的原因

    近日测试用例 发现这样一个现象 在业务代码中 有如下两种情况 比如 throw new RuntimeException xxxxxxxxxxxx 事务回滚 throw new Exception xxxxxxxxxxxx 事务没有回滚 自
  • 中缀表达式转后缀表达式C语言实现

    解决思路 依次扫描字符串元素 遇到左括号 直接入栈 遇到数字 输出当前数字 遇到乘除符号 除非栈顶遇到为 外进栈 否则遇到栈顶为 时 栈顶出栈 遇到加减符号 除非栈顶遇到 否则栈顶出栈 遇到右括号 除非栈顶遇到 否则栈顶出栈 遍历完后 弹出
  • 中文汉字 hex十六进制 互转

    工具地址 http stool chinaz com hex
  • 关于STM32调试器CMSIS_DAP的使用及注意事项

    说明 最近在淘宝上买了一个STM32F4x1系列的最小系统板 提供CMSIS DAP固件 进群领取固件 秒变CMSIS DAP调试器 技术交流QQ群 970663546 售后QQ群 1055686596 凭订单号进入 1 关于KEIL设置
  • 2021-07-26 WSL2 的安装和联网

    0 说明 最近在学习 Data Assimilation Research Testbed DART 相关内容 其软件是在 Unix Linux 操作系统下编译和运行的 由于我的电脑是 Windows 10 的 DART 推荐可以使用 Wi
  • go搭建服务器基础

    goweb应用工作原理 用于个人学习 客户端发送请求给多路复用器 多路复用器根据请求 gt 处理器处理器 gt 模型 gt 数据库 数据库找到相应的数据反馈给模型 模型将数据封装发给处理器 处理器给模板引擎然后生成模板 go里面有相应的ht
  • CUDA安装及环境配置——最新详细版

    确定安装版本 在安装之前呢 我们需要确定三件事 第一 查看显卡支持的最高CUDA的版本 以便下载对应的CUDA安装包 第二 查看对应CUDA对应的VS版本 以便下载并安装对应的VS版本 vs需要先安装 第三 确定CUDA版本对应的cuDNN
  • Forrester研究报告:Information Fabric——企业数据虚拟化(Part I、摘要翻译)

    Information Fabric 企业数据虚拟化Forrester研究报告EXECUTIVE SUMMARY总览Enterprises are facing the growing challenges of using dispara
  • 计算宽度_如何通过紫外可见漫反射光谱计算带隙/禁带宽度(图的绘制:tauc plot&KM法)...

    微信公众号试行乱序推送 为了不错过更新 请点击本页面最上方的 结构分析表征 进入公众号主页 点击右上角的三个小点点 在弹出的界面点击 设为星标 并在看完图文或视频后点击右下角的 在看 和 赞 本公众号以各类仪器的测试 分析教程 欢迎关注同名
  • 安装Windows时提示Windows无法安装到这个磁盘

    出现这种情况一般是因为安装程序的启动模式与目标磁盘的格式不一致导致 比如用UEFI启动时 目标安装盘是mbr 或用 Legacy启动时 目标安装磁盘是GPT分区 出现这种情况时 按shift F10可以打开命令提示符窗口 输入diskpar
  • ProFrom套EditableProTable如何进行表单验证

    import React useRef from react import Button from antd import BetaSchemaForm DrawerForm ProCard from ant design pro comp