# AntD中数据校验方式分类整理

本文详细整理了AntD Form组件的三种主要数据校验方式:数据联动、单一数据校验和多数据联动校验。在数据联动中,介绍了如何实现双向绑定和注意事项。单一数据校验涉及自定义校验函数。多数据联动校验则需要监听多组数据并进行整体校验。文章还提供了多个实际示例和关键点解析。
摘要由CSDN通过智能技术生成

一 概述

这篇文章主要整理了我在近期工作中,所使用Form表单组件,并进行数据校验的心得。整理出来了三种主要的校验需求,分类梳理了开发思路和方法,以及部分Form表单使用的注意事项。

这三种分类为:
  • 数据联动
  • 单一数据校验
  • 多数据联动校验

二 数据联动

有时候我们表单中的某一个控件的值可能会在别的控件中使用,或者,我们需要对输入值格式化。
举个例子,加入我们需要做一个新增档案的功能,某种事物的编码的组合需要前缀一个建档日期:


<Input
  addonBefore={
   addonBeforeValue}
  placeholder='请输入编号'
  maxLength={
   30}
/>

addonBefore属性会在输入框前面加上一个灰色的提示区域,这部分的值由建档日期这个输入项提供。因此,我需要在输入建档日期的时候,拦截这个值。

在Form表单中,有一个getFieldDecorator方法来实现双向绑定,这个方法接受两个参数,第一个是表单数据的名称,第二个参数是一个option对象,这个对象存在一个getValueFromEvent属性,值为函数。这个方法可以拦截输入时onChange的事件对象,并最终return一个值用于组件输入值的更新。


<FormItem {
   ...formItemLayout} label='事件日期'>
  {
   getFieldDecorator('createFileDate', {
   
    initialValue: detail && detail.createFileDate ?
      moment(detail && detail.createFileDate) : undefined,
    rules: [
      {
    required: true, message: '请选择事件日期' }
    ],
    getValueFromEvent: (e) => this.formatCode(e)
  })(
    <DatePicker placeholder='请选择事件日期'
      showTime
      format={
   'YYYY-MM-DD'}
      onChange={
   (date, dateString) => console.log(date, dateString)}
      style={
   {
    width: '100%' }} />
  )}
</FormItem>

// 修改编号前置的日期
formatCode = (e) => {
   
  const {
    dispatch } = this.props;
  dispatch({
   
    type: `${
     nameSpace}/updateStore`,
    payload: {
    addonBeforeValue: moment(e).format('MMDD') }
  });
  return e;
}

使用这种方式,我们不必去手动监听onChange事件,既然使用了AntD,就应该多去使用封装好的方法。

注意事项:

(1) getValueFromEvent方法接收到的参数因组件不同而不同,现在我验证过的参数如下:


Input: e.target.value,         // Input组件会返回一个对象,获得具体值找target.value
Select, InputNumber: value,    // 这两个组件直接拿到值
DatePicker: Moment,            // DatePicker 返回一个Moment对象

(2)在return的时候,日期需要返回moment对象,其他的组件直接返回格式化的值即可,这个返回值就是下一步的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值