3.3.55 • Published 4 years ago

@beisen-phoenix/form v3.3.55

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

Change Log

2019-06-18 v1.0.4

  • validateTrigger 支持在 FormItem 上配置,实现不同字段使用不同验证触发时机的效果。优先级高于 FormCore 上的全局配置

2019-06-18 v1.0.3

  • 添加 validateTrigger 属性,支持配置验证触发时机
  • 将 autoValidate 标记为即将过期接口

❓ 问题反馈http://gitlab.beisencorp.com/ux-phoenix/form/issues


一、简介

1. 主要功能

  • 数据收集
  • 数据展示
  • 数据验证

2. 核心对象

  • FormCore 对象:使用该对象与表单交互,进行数据获取,数据验证等操作
  • Form 组件:写在 JSX 中的表单组件
  • FormItem 组件:写在 JSX 中的表单字段组件

3. 组件状态

  • 表单状态(Status)包含以下三种:edit(编辑态), preview(预览态), disabled(禁用态)。
  • 状态层级,包含以下两种:Form(表单全局级别),FormItem(字段级别)。
  • 字段级别默认继承全局级别的状态,除非为字段制定了专门的字段级状态。

4. 字段组件接口

  • value:【必要】传给字段组件的值
  • hasError:字段验证失败时,传给字段组件该属性为 true
  • disabled:字段禁用时,传给字段组件该属性为 true
  • onChange:【必要】字段组件值改变时抛出的事件
  • onBlur:字段组件失去焦点时抛出的事件
  • onFocus:字段组件获得焦点时抛出的事件
  • onKeyUp:字段组件键盘事件

二、Quick Start

📦 安装

npm install @beisen-phoenix/form

🔨 使用

// 基础使用
import Form, { FormCore, FormItem } from '@beisen-phoenix/form';

let core = new FormCore();

return (
  <Form core={core}>
    <FormItem label={'用户名'} name={'username'}>
      <input />
    </FormItem>
  </Form>
);
// 获取数据
import Form, { FormCore, FormItem } from '@beisen-phoenix/form';

let core = new FormCore();

return (
  <>
    <Form core={core}>
      <FormItem label={'用户名'} name={'username'}>
        <input />
      </FormItem>
    </Form>
    <button
      onClick={() => {
        console.log(core.getValues());
      }}
    >
      GetValues
    </button>
  </>
);
// 设置数据
import Form, { FormCore, FormItem } from '@beisen-phoenix/form';

let core = new FormCore();

return (
  <>
    <Form core={core}>
      <FormItem label={'用户名'} name={'username'}>
        <input />
      </FormItem>
    </Form>
    <button
      onClick={() => {
        core.setValues({ username: 'KXLF' });
      }}
    >
      SetValue
    </button>
  </>
);
// 数据验证
import Form, { FormCore, FormItem } from '@beisen-phoenix/form';

let core = new FormCore();
let validateConfig = {
  username: { required: true, message: '请填写用户名' }
};

return (
  <>
    <Form core={core} validateConfig={validateConfig}>
      <FormItem label={'用户名'} name={'username'}>
        <input />
      </FormItem>
    </Form>
    <button
      onClick={() => {
        core.validateAll();
      }}
    >
      SetValue
    </button>
  </>
);
// 异步数据验证
import Form, { FormCore, FormItem } from '@beisen-phoenix/form';

let core = new FormCore();
let validateConfig = {
  username: {
    validator(rule, value, callback) {
      // 开始异步验证过程
      console.log('异步验证用户名');
      setTimeout(() => {
        if (value != 'KXLF') {
          // 验证失败的回调
          callback(['用户名错误!']);
        } else {
          // 验证成功的回调
          callback([]);
        }
      }, 1000);
    }
  }
};

return (
  <>
    <Form core={core} validateConfig={validateConfig}>
      <FormItem label={'用户名'} name={'username'}>
        <input />
      </FormItem>
    </Form>
    <button
      onClick={() => {
        core.validateAll();
      }}
    >
      SetValue
    </button>
  </>
);

三、API

  • 注:FormItem 的状态 Status 包含:'edit' | 'preview' | 'disable'

1. FormCore 对象 成员

属性

属性名说明类型必须配置默认值
globalStatus表单全局状态Status'edit'
status表单各个字段的状态object {name: String, Status}
value表单各个字段的值object {name:any(字段接收的value是什么格式这里就写什么格式 ), any}
autoValidate【即将废弃,建议使用 validateTrigger 实现】是否在值变化时,触发校验Booleanfalse
validateTrigger验证触发时机,支持的类型有:onChange、onBlur、onFocus、onKeyUp。string | Array[]
validateConfig验证规则, (若要动态修改,请使用 core.setValidateConfig)Object | Array
error表单的验证失败信息object {name:String, any}
props表单组件属性object {name:String, object}

方法

方法名说明类型
getGlobalStatus获取表单全局状态Function () => String
setGlobalStatus设置表单全局状态Function (String) => void
getStatus获取字段状态Function ()=> object {name: String, Status} Function (name: String) => Status
setStatus设置字段状态Function (status: object {name: String, Status}) => void Function (name: String, status: Status) => void
getValues获取所有值Function () => object {name: String, any}
getValue获取单个字段值Function (name: String) => any
setValues设置多个字段值,触发渲染Function (values: object {name: String, any}) => void
setValue设置单个字段值,触发渲染Function (name: String, value: any) => void
getError获取字段错误信息Function ()=> object {name:String, String} Function (name: String) => String
setError设置字段错误信息,触发渲染Function (name: String, message: String)=> void Function (errors: object {name: String, String}) => void
clearError清除字段错误信息,触发渲染Function (name: String)=> void Function () => void name表示字段的名字,表示清除具体某个字段的错误信息,如果不传任何参数则清空所有字段error
validateItem校验单个字段Function (name: String, cb: () => void, opts: Object) => Promise
validateAll校验所有字段Function (cb: () => Object) => Promise
validateWithoutRender校验所有字段,不触发渲染Function (cb: () => Object) => Promise
scrollToError滚动到第一个错误信息的位置Function () => void
setValidateConfig动态设置验证规则Function (config: Object) => void
getProps获取 FormItem 属性Function (name: String) => object {name:String, any}
setProps设置 FormItem 属性Function (name: String, props: object {name: String, object}) => void

事件

事件名说明类型
onChange字段值变更时触发(firekeys: Array, values: Object, ctx: FormCore) => void

2. FormCoreConfig 对象 成员

(该对象是在 new FormCore 时传入的配置对象)

属性

属性名说明类型必须配置默认值
globalStatus表单全局状态String'edit'
status字段状态object {name: String, Status}
values表单业务数据object {name: String, any}
validateConfig验证规则Object | Array

事件

事件名说明类型
initialized初始化完成的回调函数()=>void

3. Form 表单组件 成员

属性

属性名说明类型必须配置默认值
globalStatus表单全局状态Status'edit'
status表单各个字段的状态object {name: String, Status}
value表单各个字段的值object {name: String, any}
autoValidate【即将废弃,建议使用 validateTrigger 实现】是否在值变化时,触发校验Booleanfalse
validateTrigger验证触发时机,支持的类型有:onChange、onBlur、onFocus、onKeyUp。string | Array[]
validateConfig验证规则, (若要动态修改,请使用 core.setValidateConfig)Object | Array
error表单的验证失败信息object {name: String, any}
colon是否在字段名称后加冒号Boolean
layout设置布局方式('horizontal' | 'vertical' | 'adaptive-horizontal' | 'adaptive-vertical')'horizontal'

事件

事件名说明类型
onMount组件挂载完毕(cb: () => FormCore) => void
onChange字段值发生变化(val: Object, fireKey: Array, core: any) => void
onFocus字段控件获得焦点(name: String) => void
onBlur字段控件失去焦点(name: String) => void
onKeyUp字段控件键盘事件(event: React.KeyboardEvent) => void

4. FormItem 表单字段组件 成员

属性

属性名说明类型必须配置默认值
name字段唯一标识名称,不可重复String随机
value字段值any
status字段状态Status'edit'
error字段验证失败信息any
props字段组件属性Object
globalStatus表单全局状态Status'edit'
validateTrigger验证触发时机,优先级高于 FormCore 上的配置,支持的类型有:onChange、onBlur、onFocus、onKeyUp。string | Array[]
validateConfig验证规则Object | Array
colon是否在字段名称后加冒号Boolean
labelWidth自定义字段标题的宽度,horizontal 布局下默认为 72pxNumber
labelHelp字段标题右侧的帮助图标String | Element
labelHelpLink字段标题右侧的帮助图标的链接,有值即为链接,无值即为普通帮助提示String
contentHelp字段控件的帮助说明String
labelAlign字段标题水平对齐方式'left' | 'right''right'

事件

事件名说明类型
onFocus字段控件获得焦点(name: String) => void
onBlur字段控件失去焦点(name: String) => void
onKeyUp字段控件失去焦点(event: React.KeyboardEvent) => void

四、常见问题

  • 一个 Form 对应一个 Core 实例,避免不同 form 之间互相影响
  • validateConfig 在组件初始化时使用,若需要动态修改,请使用 Core 实例的 setValidateConfig 方法
3.3.55

4 years ago

3.3.53

4 years ago

3.3.54

4 years ago

3.3.52

4 years ago

3.3.51

4 years ago

3.3.50

5 years ago

3.3.49

5 years ago

3.3.48

5 years ago

3.3.46

5 years ago

3.3.47

5 years ago

3.3.41

5 years ago

3.3.42

5 years ago

3.3.43

5 years ago

3.3.45

5 years ago

3.3.41-beta.1

5 years ago

3.3.38

5 years ago

3.3.39

5 years ago

3.3.35

5 years ago

3.3.36

5 years ago

3.3.37

5 years ago

3.3.33

5 years ago

3.3.34

5 years ago

3.3.32

5 years ago

3.3.31

5 years ago

3.3.29

5 years ago

3.3.28

5 years ago

3.3.27

5 years ago

3.3.26

5 years ago

3.3.25

5 years ago

3.3.24

5 years ago

3.3.23

5 years ago

3.3.22

5 years ago

3.3.21

5 years ago

3.3.20

5 years ago

3.3.19

5 years ago

3.3.18

5 years ago

3.3.17

5 years ago

3.3.16

5 years ago

3.3.15

5 years ago

3.3.14

5 years ago

3.3.13

5 years ago

3.3.12

5 years ago

3.3.11

5 years ago

3.3.10

5 years ago

3.3.9

5 years ago

3.3.8

5 years ago

3.3.7

5 years ago

3.3.6

5 years ago

3.3.5

5 years ago

3.2.80-beta.1

5 years ago

3.2.80

5 years ago

3.3.4

5 years ago

3.3.3

5 years ago

3.3.1

5 years ago

3.3.0

5 years ago

3.2.97

5 years ago

3.2.95

5 years ago

3.2.94

5 years ago

3.2.93

5 years ago

3.2.92

5 years ago

3.2.90

5 years ago

3.2.88

5 years ago

3.2.87

5 years ago

3.2.86

5 years ago

3.2.85

5 years ago

3.2.84

5 years ago

3.2.83

5 years ago

3.2.82

5 years ago

3.2.81

5 years ago

3.2.79

5 years ago

3.2.78

5 years ago

3.2.76

5 years ago

3.2.7-rc.1

5 years ago

3.2.74

5 years ago

3.2.73

5 years ago

3.2.69-beta.1

5 years ago

3.2.72

5 years ago

3.2.69

5 years ago

3.2.68

5 years ago

3.2.64-beta.11

5 years ago

3.2.64-beta.1

5 years ago

3.2.63

5 years ago

3.2.61

5 years ago

3.2.60

5 years ago

3.2.59

5 years ago

3.2.54

5 years ago

3.2.47-beta.8

5 years ago

3.2.47-beta.7

5 years ago

3.2.53

5 years ago

3.2.51

5 years ago

3.2.47-beta.6

5 years ago

3.2.47-beta.5

5 years ago

3.2.50

5 years ago

3.2.49

5 years ago

3.2.47-beta.4

5 years ago

3.2.47-beta.3

5 years ago

3.2.47-alpha.3

5 years ago

3.2.47-beta.2

5 years ago

3.2.47-alpha.2

5 years ago

3.2.48

5 years ago

3.2.47-beta.1

5 years ago

3.2.45-alpha.1

5 years ago

3.2.47

5 years ago

3.2.46

5 years ago

3.2.45-beta.1

5 years ago

3.2.45-beta.0

5 years ago

3.2.45

5 years ago

3.2.44-rc.4

5 years ago

3.2.44-rc.3

5 years ago

3.2.44-rc.2

5 years ago

3.2.44-rc.1

5 years ago

3.2.44

5 years ago

3.2.43

5 years ago

3.2.42

5 years ago

3.2.41

5 years ago

3.2.40

5 years ago

3.2.39

5 years ago

3.2.37

5 years ago

3.2.35

5 years ago

3.2.34

5 years ago

3.2.33

5 years ago

3.2.32

5 years ago

3.2.31

5 years ago

3.2.30

5 years ago

3.2.29

5 years ago

3.2.28

5 years ago

3.2.27

5 years ago

3.2.26

5 years ago

3.2.25

5 years ago

3.2.24

5 years ago

3.2.23

5 years ago

3.2.22

5 years ago

3.2.21

5 years ago

3.2.20

5 years ago

3.2.19

5 years ago

3.2.18

5 years ago

3.2.17

5 years ago

3.2.16

5 years ago

3.2.15

5 years ago

3.2.14

5 years ago

3.2.12

5 years ago

3.2.10

5 years ago

3.2.9

5 years ago

3.2.8

5 years ago

3.2.7

5 years ago

3.2.6

5 years ago

3.2.5

5 years ago

3.2.4

5 years ago

3.2.3

5 years ago

3.2.2

5 years ago

3.2.1

5 years ago

3.1.99

5 years ago

3.1.98

5 years ago

3.1.97

5 years ago

3.1.96

5 years ago

3.1.95

5 years ago

3.1.94

5 years ago

3.1.92

5 years ago

3.1.91

5 years ago

3.1.90

5 years ago

3.1.89

5 years ago

3.1.88

5 years ago

3.1.87

5 years ago

3.1.86

5 years ago

3.1.85

5 years ago

3.1.84

5 years ago

3.1.83

5 years ago

3.1.82

5 years ago

3.1.81

5 years ago

3.1.80

5 years ago

3.1.79

5 years ago

3.1.78

5 years ago

3.1.77

5 years ago

3.1.76

5 years ago

3.1.75

5 years ago

3.1.74

5 years ago

3.1.73

5 years ago

3.1.72

5 years ago

3.1.71

5 years ago

3.1.70

5 years ago

3.1.69

5 years ago

3.1.68

5 years ago

3.1.67

5 years ago

3.1.65

5 years ago

3.1.64

5 years ago

3.1.63

5 years ago

3.1.62

5 years ago

3.1.61

5 years ago

3.1.60

5 years ago

3.1.59

5 years ago

3.1.58

5 years ago

3.1.57

5 years ago

3.1.56

5 years ago

3.1.55

5 years ago

3.1.47

5 years ago

3.1.46

5 years ago

3.1.39

5 years ago

3.1.38

5 years ago

3.1.37

5 years ago

3.1.35

5 years ago

3.1.34

5 years ago

3.1.33

5 years ago

3.1.32

5 years ago

3.1.31

5 years ago

3.1.30

5 years ago

3.1.29

5 years ago

3.1.28

5 years ago

3.1.22

5 years ago

3.1.21

5 years ago

3.1.20

5 years ago

3.1.19

5 years ago

3.1.18

5 years ago

3.1.14

5 years ago

3.1.13

5 years ago

3.1.12

5 years ago

3.1.11

5 years ago

3.1.10

5 years ago

3.1.9

5 years ago

3.1.7

5 years ago

3.1.6

5 years ago

3.1.5

5 years ago

3.1.4

5 years ago

3.1.3

5 years ago

3.1.2

5 years ago

3.1.1

5 years ago

3.0.99

5 years ago

3.0.98

5 years ago

3.0.97

5 years ago

3.0.96

5 years ago

3.0.95

5 years ago

3.0.92

5 years ago

3.0.91

5 years ago

3.0.90

5 years ago

3.0.89

5 years ago

3.0.88

5 years ago

3.0.87

5 years ago

3.0.81

5 years ago

3.0.80

5 years ago

3.0.79

5 years ago

3.0.78

5 years ago

3.0.74

5 years ago

3.0.73

5 years ago

3.0.72

5 years ago

3.0.71

5 years ago

3.0.70

5 years ago

3.0.69

5 years ago

3.0.68

5 years ago

3.0.67

5 years ago

3.0.59

5 years ago

3.0.57

5 years ago

3.0.56

5 years ago

3.0.55

5 years ago

3.0.54

5 years ago

3.0.53

5 years ago

3.0.52

5 years ago

3.0.51

5 years ago

3.0.49

5 years ago

3.0.47

5 years ago

3.0.46

5 years ago

3.0.45

5 years ago

3.0.44

5 years ago

3.0.43

5 years ago

3.0.42

5 years ago

3.0.41

5 years ago

3.0.40

5 years ago

3.0.39

5 years ago

3.0.38

5 years ago

3.0.37

5 years ago

3.0.35

5 years ago

3.0.34

5 years ago

3.0.33

5 years ago

3.0.30

5 years ago

3.0.27

5 years ago

3.0.26-rc.1

5 years ago

3.0.26

5 years ago

3.0.25

5 years ago

3.0.24

5 years ago

3.0.23

5 years ago

3.0.22

5 years ago

3.0.20

5 years ago

3.0.19

5 years ago

3.0.18

5 years ago

3.0.17

5 years ago

3.0.16

5 years ago

3.0.10

5 years ago

3.0.8

5 years ago

3.0.7

5 years ago

3.0.3

5 years ago

3.0.1-rc.83

5 years ago

3.0.1-rc.82

5 years ago

3.0.1-rc.81

5 years ago

3.0.1-rc.80

5 years ago

3.0.1-rc.79

5 years ago

3.0.1-rc.78

5 years ago

3.0.1-rc.77

5 years ago

3.0.1-rc.75

5 years ago

3.0.1-rc.74

5 years ago

3.0.1-rc.73

5 years ago

3.0.1-rc.72

5 years ago

3.0.1-rc.71

5 years ago

3.0.1-rc.70

5 years ago

3.0.1-rc.69

5 years ago

3.0.1-rc.68

5 years ago

3.0.1-rc.67

5 years ago

3.0.1-rc.65

5 years ago

3.0.1-rc.64

5 years ago

3.0.1-rc.63

5 years ago

3.0.1-rc.59

5 years ago

3.0.1-rc.58

5 years ago

3.0.1-rc.56

5 years ago

3.0.1-rc.54

5 years ago

3.0.1-rc.52

5 years ago

3.0.1-rc.47

5 years ago

3.0.1-rc.44

5 years ago

3.0.1-rc.42

5 years ago

3.0.1-rc.41

5 years ago

3.0.1-rc.40

5 years ago

3.0.1-rc.39

5 years ago

3.0.1-rc.38

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

3.0.1-rc.37

5 years ago

3.0.1-rc.36

5 years ago

3.0.1-rc.34

5 years ago

3.0.1-rc.32

5 years ago

3.0.1-rc.31

5 years ago

3.0.1-rc.30

5 years ago

3.0.1-rc.28

5 years ago

3.0.1-rc.25

5 years ago

3.0.1-rc.24

5 years ago

3.0.1-rc.22

5 years ago

3.0.1-rc.21

5 years ago

3.0.1-rc.19

5 years ago

3.0.1-rc.18

5 years ago

3.0.1-rc.16

5 years ago

3.0.1-rc.15

5 years ago

3.0.1-rc.12

5 years ago

3.0.1-rc.11

5 years ago

3.0.1-rc.10

5 years ago

3.0.1-rc.9

5 years ago

3.0.1-rc.7

5 years ago

3.0.1-rc.6

5 years ago

3.0.1-rc.5

5 years ago

3.0.1-rc.4

5 years ago

3.0.1-rc.1

5 years ago

3.0.0-rc.90

5 years ago

3.0.0-rc.86

5 years ago

3.0.0-rc.85

5 years ago

3.0.0-rc.84

5 years ago

3.0.0-rc.81

5 years ago

3.0.0-rc.78

5 years ago

3.0.0-rc.77

5 years ago

3.0.0-rc.76

5 years ago

3.0.0-rc.71

5 years ago

3.0.0-rc.70

5 years ago

3.0.0-rc.69

5 years ago

3.0.0-rc.68

5 years ago

3.0.0-rc.67

5 years ago

3.0.0-rc.65

5 years ago

3.0.0-rc.64

5 years ago

3.0.0-rc.62

5 years ago

3.0.0-rc.61

5 years ago

3.0.0-rc.59

5 years ago

3.0.0-rc.54

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

3.0.0-rc.47

5 years ago

3.0.0-rc.43

5 years ago

3.0.0-rc.42

5 years ago

3.0.0-rc.41

5 years ago

3.0.0-rc.38

5 years ago

3.0.0-rc.37

5 years ago

3.0.0-rc.35

5 years ago

3.0.0-rc.34

5 years ago

3.0.0-rc.33

5 years ago

3.0.0-rc.32

5 years ago

3.0.0-rc.31

5 years ago

3.0.0-rc.30

5 years ago

3.0.0-rc.29

5 years ago

3.0.0-rc.28

5 years ago

3.0.0-rc.27

5 years ago

3.0.0-rc.26

5 years ago

3.0.0-rc.25

5 years ago

3.0.0-rc.24

5 years ago

3.0.0-rc.22

5 years ago

3.0.0-rc.20

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago