1.0.0 • Published 7 years ago

tr-validate-form v1.0.0

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

创建可验证组件

  • 通过createValidateComponent方法来创建一个可验证的组件,可以传入validator来完成单独验证
import * as React from 'react'props
import { createValidateComponent } from 'src/core'

class InputComponent extends React.Component<any, undefined> {
    render() {
        let props = this.props
        return (
            <div className="input">
                <input type="text" {...props} />
            </div>
        )
    }
}

export default createValidateComponent()(InputComponent)

创建需要验证的表单

  • 通过createValidateForm来创建可验证表单,需要传入验证条件,如果无验证条件则无法验证
  • 可验证组件需要设置condtion属性,如果没有,则不验证,condtion对应验证条件的key
  • 可验证组件可以设置vid属性,但在一个表单内必须是唯一
  • validator通过vid可以获取组件验证状态、设置组件condition或者手动赋予验证结果
import * as React from 'react'
import { createValidateForm, IValidateFormProps, TestConstant, TriggerConstant } from 'src/core'
import Input from './input'
const conditions = {
    text: {
        trigger: [TriggerConstant.FOCUS, TriggerConstant.CHANGE],
        rules: [{ test: TestConstant.REQUIRED, message: '文本不能为空' }]
    },
    number: {
        trigger: [TriggerConstant.BLUR, TriggerConstant.CHANGE],
        rules: [{ test: TestConstant.REQUIRED, message: '数值不能为空' }, { test: TestConstant.NUMBER, message: '数值不合法' }]
    }
}
class Form extends React.Component<IValidateFormProps, any> {
    state = {
        text: '',
        number: ''
    }
    render() {
        let { validator } = this.props
        let { text, number } = this.state
        return (
            <div className="form">
                <div className="form-inline">
                    <label>文本</label>
                    <Input condition="text" value={text} onChange={e => this.setState({ text: e.target.value })}/>
                </div>
                <div className="form-inline">
                    <label>数值</label>
                    <Input condition="number" value={number} onChange={e => this.setState({ number: e.target.value })} />
                </div>
                <div className="form-inline offset">
                    <button type="button" onClick={this.props.submit}>
                        验证
                    </button>
                    <button type="button" onClick={this.props.reset}>
                        重置
                    </button>
                </div>
            </div>
        )
    }
}

export default createValidateForm(conditions)(Form)

后话

验证类型还在不断完善,部分功能开发中...