实现Ant Design验证器(ReactJS)的可重用方法

时间:2019-02-01 12:46:51

标签: reactjs antd

我正在尝试根据ant design https://ant.design/components/form/提供的文档来实现验证器

将方法放在相同的类/组件中时,这些方法将起作用。 验证器方法使用回调方法,该方法会在调用验证方法的地方抛出一个字符串。

我想要实现的是我希望同一验证器方法可重用。当我将它们放在另一个班级时,它不起作用。

我尝试将其移至其他类并导出方法。在同一组件中导入方法时,回调不起作用。

这是我用于验证的方法:

with member [Measures].[Valor Acumulado] 
as Sum(PeriodsToDate([Período].[Mês].[(All)]),[Measures].[Valor Pago]
)
 with member 
 [Measures].[Valor Acumulado] as Sum(YTD([Período].[Mês].[(All)]),
 [Measures].[Valor Pago])

这是我调用上述方法的地方。

mobileCountryCodeValidator = (rule, value, callback) => {
    const { getFieldValue } = this.props.form
    let countryCode = getFieldValue('phoneCountryCode')
    if (countryCode === '92') {
      if (value.substring(0, 1) !== '3') {
        callback('Number should start with 3 for Pakistan.')
      }
      callback()
    } else if (countryCode === '966') {
      if (value.substring(0, 2) !== '05') {
        callback('Number should start with 05 for Saudi Arabia.')
      }
      callback()
    }
  }

所以我期望的是如何将<FormItem validateStatus="validating"> {getFieldDecorator('phoneNumber', {rules: [ { required: true, message: 'Please input your phone number.' }, { len: 10, message: 'Phone number should be 10 digits long.' }, { validator: this.numbersValidator }, { validator: this.mobileCountryCodeValidator }, ]})( <Input placeholder="Enter Mobile Number" /> )} </FormItem> 方法移到另一个类,以便它可以成为可重用的方法。因此,我也可以在其他组件中使用它们。

1 个答案:

答案 0 :(得分:0)

验证者需要import numpy as np length = 3 sample_data = [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4] np.random.choice(sample_data, length, False) #Sampling without replacement Out[287]: array([4, 4, 2]) 对象。

您应该能够做到这一点与封闭的一点点

form

mobileCountryCodeValidator = (form) => (rule, value, callback) => {
    const { getFieldValue } = form;  // this line changed
    let countryCode = getFieldValue('phoneCountryCode')
    if (countryCode === '92') {
      if (value.substring(0, 1) !== '3') {
        callback('Number should start with 3 for Pakistan.')
      }
      callback()
    } else if (countryCode === '966') {
      if (value.substring(0, 2) !== '05') {
        callback('Number should start with 05 for Saudi Arabia.')
      }
      callback()
    }
  }