2.1.0 • Published 2 years ago

react-form-validates v2.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
2 years ago

Form 表单

React 快速验证form

Install

npm install react-form-validates --save

Usage

import React, { Component } from 'react'
import { Picker, Input } from 'zarm';
import Form from 'react-form-validates';

import './App.scss';
import 'zarm/styles/index.scss';
import '~react-form-validates/styles/index.css';

const createForm = Form.create;
const FormItem = Form.Item;

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      certTypeDatas: [
        { value: '0', label: '请选择证件类型' },
        { value: '1', label: '身份证' },
        { value: '2', label: '护照' },
      ]
    };

    this.onSubmit = this.onSubmit.bind(this);
  }
  onSubmit(e) {
    e.preventDefault();

    this.props.form.validateFields((errors, value) => {
      console.log(errors)
      console.log(value)
    })

  }
  render() {
    const { certTypeDatas } = this.state;
    const { getFieldProps } = this.props.form;

    console.log('props', this.props)

    const nameProps = getFieldProps('name', {
      rules: [
        { required: true, message: '用户名至少为 5 个字符' },
        { required: true, min: 5, regexp: /^\d/, message: '用户名至少为 5 个字符' },
      ]
    });

    const certTypeProps = getFieldProps('certType', {
      rules: [
        { required: true, message: '证件类型' },
      ]
    });

    const certNoProps = getFieldProps('certNo', {
      rules: [
        { required: true,  type: 'number', message: '证件号码必须为数字值' },
      ]
    });

    const phoneProps = getFieldProps('phone', {
      rules: [
        { required: true, message: '请输入手机号' },
        { required: true, type: 'isMobile', message: '请输入正确手机号' },
      ]
    });

    const popperProps = getFieldProps('popper', {
      rules: [
        { required: true, message: '支持popper类型的提示框', requiredType: 'popper', classname: 'your_classname' },
      ]
    });

    return (
      <div className="form-wrap">
        <Form onSubmit={this.onSubmit}>
          <FormItem
            label="姓名"
          >
            <Input type="text" {...nameProps} placeholder="请输入姓名" />
          </FormItem>
          <FormItem
            label="证件类型"
          >
            <Picker
              dataSource={ certTypeDatas }
              />
          </FormItem>
          <FormItem
            label="证件号码"
          >
            <Input type="text" {...certNoProps} placeholder="请输入证件号码" />
          </FormItem>
          <FormItem
            label="手机号"
          >
            <Input type="number" {...phoneProps} placeholder="请输入手机号" />
          </FormItem>

          <div className="button-inner">
            <button type="submit" className="button-submit">提交</button>
          </div>
        </Form>
      </div>
    )
  }
}

export default createForm()(App);

API

Form

参数说明类型默认值
form经 Form.create() 包装过的组件会自带 this.props.form 属性object
onSubmit数据验证成功后回调事件objectFunction(e:Event)
prefixCls样式类名,默认为 ui-form,通常您不需要设stringui-form

Form.create(options)

使用方式如下:

  class DemoForm extends Component {}

  export default Form.create({})(DemoForm);

options配置

参数说明类型
onFieldsChange当 Form.Item 子节点的值发生改变时触发,可以把对应的值转存到 Redux storeFunction(props, fields)
mapPropsToFields把 props 转为对应的值,可用于把 Redux store 中的值读出object

经过 Form.create 包装的组件将会自带 this.props.form 属性,this.props.form 提供的 API 如下:

参数说明类型------
getFieldsValue获取一组输入控件的值,如不传入参数,则获取全部组件的值Function(props, fields)
getFieldValue获取一个输入控件的值Function(fieldName: string)
setFieldsValue设置一组输入控件的值Function({ fieldname: value })
setFields设置一组输入控件的值与 Error.Function(obj: object)
validateFields校验并获取一组输入域的值与 Error.Function([fieldNames: string[]], options: object, callback: Function(errors, values))
validateFieldsAndScrollvalidateFields 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围参考 validateFields
getFieldError获取某个输入控件的 ErrorFunction(name)
isFieldValidating判断一个输入控件是否在校验状态Function(name)
resetFields重置一组输入控件的值与状态,如不传入参数,则重置所有组件Function([names: string[]])
getFieldProps用于和表单进行双向绑定,详见下方描述

Form.Item

参数说明类型可选值默认值
labellabel 标签的文本node
className设置 className 值string
type样式类型,有右边箭头string'normal' 'link' 'select'

this.props.form.getFieldProps(id, options)

id 必填,输入控件唯一标志
getFieldProps options

参数说明类型默认值
valuePropName子节点的值的属性,如 Switch 的是 'checked'stringvalue
initialValue子节点的初始值,类型、可选值均由子节点决定string'onChange'
trigger收集子节点的值的时机stringui-form
validateTrigger校验子节点值的时机string'onChange'
rules校验规则,参见 async-validatorarray
onXXX由于 getFieldProps 会占用 onChange 等事件(即你所设置的 trigger validateTrigger),所以如果仍需绑定事件,请在 options 内设置function
exclusive是否和其他控件互斥,特别用于 Radio 单选控件booleanfalse
2.1.0

2 years ago

2.0.8

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.5

3 years ago

2.0.4

4 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0-alpha.1

5 years ago

2.0.0

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.1.0

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago