2.0.14 • Published 3 years ago

bee-form v2.0.14

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

bee-form

npm version Build Status Coverage Status devDependency Status NPM downloads Average time to resolve an issue Percentage of issues still open

react bee-form component for tinper-bee

依赖

  • react >= 15.3.0
  • react-dom >= 15.3.0
  • prop-types >= 15.6.0

使用方法

/**
 *
 * @title 基本form校验
 * @description 登录示例
 */
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Form from '../../src';
import FormControl from 'bee-form-control';
import Label from 'bee-label';
import Button from 'bee-button';
const FormItem = Form.FormItem;

class Demo2 extends Component {

    submit = (e) => {
        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            if (err) {
                console.log('校验失败', values);
            } else {
                console.log('提交成功', values)
            }
        });
    }
    render() {
        const { getFieldProps, getFieldError } = this.props.form;
        return (
            <div className="demo2">
                <Form >
                    <FormItem>
                        <Label>用户名:</Label>
                        <FormControl placeholder="请输入用户名"
                            {...getFieldProps('username', {
                                validateTrigger: 'onBlur',
                                rules: [{
                                    required: true, message: '请输入用户名',
                                }],
                            }) }
                        />
                        <span className='error'>
                            {getFieldError('username')}
                        </span>
                    </FormItem>
                    <FormItem>
                        <Label>密码:</Label>
                        <FormControl placeholder="请输入密码" type='password'
                            {...getFieldProps('password', {
                                validateTrigger: 'onBlur',
                                rules: [{
                                    required: true, message: '请输入密码',
                                }],
                            }) }
                        />
                        <span className='error'>
                            {getFieldError('password')}
                        </span>
                    </FormItem>
                    <div className='submit'>
                        <Button colors="primary" className="login" onClick={this.submit}>登陆</Button>
                        <Button shape="border" className="reset">取消</Button>
                    </div>
                </Form>
            </div>
        )
    }
}
export default Form.createForm()(Demo2);

API

Form

代码演示

API

基于 rc-form

使用注意,写在最前面

  • 同一个表单中,表单元素不能设置相同的name
  • 使用 getFieldProps 后,不能使用 ref 。 可以使用 this.props.form.getFieldInstance('ref')

Form

参数说明类型默认值
form经过Form.createForm包装后的组件,都带有this.props.form属性Object-
prefixCls类名前缀Stringu-form
className类名String-
onSubmit提交事件Function-
style样式Object-

FormItem

参数说明类型默认值
prefixCls类名前缀Stringu-form
className类名String-
style样式Object-

this.props.form

参数说明类型默认值
getFieldProps配置受控表单元素,经过此方法包装的表单元素才可以使用this.props.form中的其它方法,此表单元素需要有onChange方法,并且onChange回调的第一个值为此表单元素当前值--
getFieldDecorator类似getFieldProps--
getFieldsValue([fieldNames: String[]])根据name获取多个表单元素的值--
getFieldValue(fieldName: String)根据name获取单个表单元素的值--
getFieldInstance(fieldName: String)根据name获取表单元素--
setFieldsValue(obj: Object)根据name设置多个表单元素的值--
setFieldsInitialValue(obj: Object)根据name设置多个表单元素的默认值--
setFields(obj: Object)根据name设置多个表单元素的属性--
validateFields([fieldNames: String[]], options: Object, callback: (errors, values) => void)校验表单。options.force(bool):是否校验已经校验过的字段;--
getFieldsError(names)获取多个表单元素的错误信息--
getFieldError(name)获取单个表单元素的错误信息--
isFieldValidating(name: String)单个表单元素是否正在校验--
isFieldsValidating(names: String[])多个表单元素是否正在校验--
isFieldTouched(names: String[])单个表单元素的值是否已经被用户更改--
isFieldsValidating(names: String[])多个表单元素的值是否已经被用户更改--
resetFields([names: String[]])重置表单--
isSubmitting()表单是否正在提交--
submit(callback: Function)表单正在提交返回true,callback执行后返回false--

getFieldProps(name, option): Object { valuePropName, trigger, validateTrigger }

参数说明类型默认值
name设置表单元素name,不可以重复String-
option.valuePropName设置表单元素取值的属性Stringvalue
option.getValueProps根据表单元素属性获得值function(value)=>({value})
option.getValueFromEvent根据表单元素方法获得值function(value)=>({value})
option.normalize格式化值function-
option.trigger侦听以收集表单数据的事件String'onChange'
option.initialValue设置默认值any-
option.validateTrigger设置校验时机StringonChange
option.rules设置校验规则Object-
option.validateFirst当第一个校验失败时候是否阻止校验下一个校验规则booleanfalse
option.hidden是否在验证时忽略当前字段booleanfalse
option.onChange代替组件上的onChange方法function-

getFieldDecorator(name:String, option: Object) => (React.Node) => React.Node

getFieldProps 作用类似。 例如

<Form>

  {getFieldDecorator('name', otherOptions)(<FormControl />)}

</Form>

rules 常用

参考 async-validator

参数说明类型默认值
required是否必选booleanfalse
type内建校验类型(string字符串/number数字/boolean布尔/method函数/integer整数/float带小数点的数字/array数组使用Array.isArray判断/object对象且不是array/enum枚举/date日期/url链接/email邮箱),string'string'
pattern正则表达式校验RegExp-
min/max使用min和max属性定义范围。对于字符串和数组类型与长度进行比较,对于数字类型,数字不能小于min也不能大于max--
len若要验证字段的确切长度,请指定len属性。对于长度属性执行字符串和数组类型比较,对于数字类型,此属性指示数字的精确匹配,即,它只能严格等于len。如果len属性与min和max范围属性组合,len优先。--
enum值为枚举类型中的一个。 例如:rules:[{type: "enum", enum: ['admin', 'user', 'guest']}]--
transform校验前转换字段值function(value) => transformedValue:any-
validator自定义校验(注意,callback 必须被调用)function(rule, value, callback)-
whitespace通常将仅包含空格的所需字段视为错误。若要为仅由空格组成的字符串添加额外的测试,值设置为true的规则添加空格属性。规则必须是字符串类型。booleanfalse
fields如果需要验证深对象属性,可以通过向规则的字段属性分配嵌套规则来验证对象或数组类型的验证规则。Object-

createForm(option: Object) => (WrappedComponent: React.Component) => React.Component

参数说明类型默认值
option.validateMessagesasync-validator的预制消息--
option.onFieldsChange表单元素更改的回调,参数:(props, changed, all)function-
option.onValuesChange表单元素值更改的回调,参数:(props, changed, all)function-
option.mapProps将新的属性转义到WrappedComponent上functionprops => props
option.mapPropsToFields将新的值从属性转义到表单元素上function-
option.fieldNameProp设置存取 getFieldProps 名称的storestring-
option.fieldMetaProp设置存取 getFieldProps 原数据的storestring-
option.fieldDataProp设置存取 getFieldProps 数据的storestring-
option.withRef(deprecated)是否为包装组件实例维护ref,使用refs.wrappedComponent进行访问booleanfalse

开发调试

$ npm install -g bee-tools
$ git clone https://github.com/tinper-bee/bee-form
$ cd bee-form
$ npm install
$ npm run dev
2.0.14

3 years ago

2.0.13

4 years ago

2.0.12

5 years ago

2.0.12-alpha.1

5 years ago

2.0.12-alpha.0

5 years ago

2.0.11

5 years ago

2.0.10

5 years ago

2.0.10-alpha.0

5 years ago

2.0.9

5 years ago

2.0.8

5 years ago

2.0.7

5 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.0

6 years ago

1.1.10

6 years ago

1.1.9

6 years ago

1.0.25

6 years ago

1.1.8

6 years ago

1.1.7

6 years ago

1.1.6

6 years ago

1.0.24

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.0.23

6 years ago

1.0.22

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.17

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

1.0.0

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.9

7 years ago