Field 表单通用工具
辅助获取表单数据的工具
何时使用#
在需要校验、获取多个表单数据的时候使用,可以提高数据获取效率。
注意事项#
使用了Field init 过的组件,请勿再定义 ref value onChange 事件。
Form已经和Field 在数据获取和自动校验提示方面做了深度优化,建议在Form中使用Field, 请查看 Form demo。
API#
初始化#
let myfield = new Field(this [,options]);
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| this | 传入调用class的this | React.Component | 必须设置 | |
| options | 一些事件配置, 详细参数如下 | React.Component | 非必须 |
options 配置项
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| onChange | 所有组件的change都会到达这里[setValue不会触发该函数] | Function(name,value) |
API接口#
new之后的对象提供的api接口 (例:myfield.getValues())(set 开头的api函数不要在render里面操作)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| init | 初始化每个组件,详细参数如下) | Function(name:string, option:object) | ||
| getValues | 获取一组输入控件的值,如不传入参数,则获取全部组件的值 | Function([names: string[]]) | ||
| getValue | 获取单个输入控件的值 | Function(name: string) | ||
| setValues | 设置一组输入控件的值(会触发render,请遵循react时机使用) | Function(obj: object) | ||
| setValue | 设置单个输入控件的值 (会触发render,请遵循react时机使用) | Function(name: string, value) | ||
| validate | 校验并获取一组输入域的值与 Error | Function([names: string[]], [options: object], callback: Function(errors, values)) | ||
| getError | 获取单个输入控件的 Error | Function(name: string) | ||
| setError | 设置单个输入控件的 Error | Function(name: string, errors:string/array[string]) | ||
| setErrors | 设置一组输入控件的 Error | Function(obj: object) | ||
| reset | 重置一组输入控件的值、清空校验 | Function([names: string[]]) | ||
| getState | 判断校验状态 | Function(name: string) | 'error' 'success' 'validating' '' | '' |
| remove | 删除某一个或者一组控件的数据,删除后与之相关的validate/value都会被清空 | Function(name: string/string[]) |
init#
init(name,options)
| 参数 | 说明 | 类型 | 可选值 | 默认值 | |
|---|---|---|---|---|---|
| name | 必填输入控件唯一标志 | string | |||
| options.valueName | 组件值的属性名称,如 Checkbox 的是 checked,Input是 value | string | 'value' | ||
| options.initValue | 组件初始值,如果不填会自动读取组件的defaultValue | any | |||
| options.trigger | 触发取数据的方法 | string | 'onChange' | ||
| options.rules | 校验规则 | array/object | |||
| options.normalize | 自定义从onChange参数获取value的方式,一般不需要设置 | Function(value,e) |
返回值
{id,value,onChange}rules#
{
rules:[{ required: true }]
}多个rule
{
rules:[{required:true,trigger:'onBlur'},{pattern:/abcd/,message:'abcd不能缺'},{validator:(rule, value, callback)=>{callback('出错了')}}]
}| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| required | 不能为空 (不能和pattern同时使用) | Boolean | true | |
| message | 出错时候信息 | string | ||
| type | 被校验数据类型, 详细文档见 | string | string/array/url/email/... | string |
| pattern | 校验正则表达式 | 正则表达式(例如:/^[0-9]*$/) | ||
| len | 长度校验,如果max、mix混合配置,len的优先级最高 | number | ||
| min | 最小值 | number | ||
| max | 最大值 | number | ||
| whitespace | 允许空白字符 | Boolean | ||
| validator | 自定义校验 | Function(rule,value,callback) |
更加详细的rules建议规则见async-validator的rules项
