Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/niqingyang/antd-form-plus

简化了一些 antd form 的开发,在兼容 antd form 的同时进行了一些增强
https://github.com/niqingyang/antd-form-plus

antd form javascript react

Last synced: 18 days ago
JSON representation

简化了一些 antd form 的开发,在兼容 antd form 的同时进行了一些增强

Awesome Lists containing this project

README

        

# antd-form-plus

简化了一些 antd form 的开发,在兼容 antd form 的同时进行了一些增强

## Installation

```js
npm install --save antd-form-plus
```

## Usage

### 支持根据定义好的 fields 进行渲染

定义 fields

- fields 中支持 FormItem 和 getFieldDecorator 的全部属性和参数,具体参数可以参考官方文档:https://ant.design/components/form-cn/#getFieldDecorator(id,-options)
- fields 中支持 errors,可以在初始是直接显示表单项的错误信息,再后面的验证后可以被覆盖
- fields 简化了 mapPropsToFields 的操作,无需通过 Form.createFormField() 对数据进行处理
- fields 支持 props 属性,可以为 FormField 中的表单项组件设置属性,但优先级比表单项组件标签上的属性低
- fields 支持 props 属性不建议设置 value 和 onChange,否则会收到 antd form 的 getFieldDecorator 的无情警告

```js
class demo {
fields = {
title: {
value: '标题的初始值',
label: intl.formatMessage({id: 'form.title.label'}),
rules: [
{
required: true,
message: intl.formatMessage({id: 'validation.title.required'}),
},
],
errors: [
{
message: '初始显示的错误信息'
}
],
// 不要绑定 value 和 onChange 事件
props: {
placeholder: '给目标起个名称吧'
}
},
date: {
value: [
moment('2019-01-01'),
moment('2019-03-01')
],
label: intl.formatMessage({id: 'form.date.label'}),
rules: [
{
required: true,
message: intl.formatMessage({id: 'validation.date.required'}),
}
]
}
}
}
```

- Form.create() 新增了 fields 参数,类似 mapPropsToFields 的方式从 redux 或 mobx 中获取到 store
- Form.create() 参数中 存在 mapPropsToFields 而不存在 fields 时,会自动根据 mapPropsToFields 的值转化为 fields
- 使用 FormField 替换了 getFieldDecorator(),会在 FormField 中根据其 field 属性去调用 getFieldDecorator 进行渲染
- FormItem 如果定义了 field={form.get(XXX)},则会根据定义的属性进行渲染,但同时也支持在 FormItem 标签内直接定义属性,并且标签内的属性优先级最高
- FormField 必须指定属性 field={form.get('title')},组件内部会调用 getFieldDecorator()
- form.get('XXX') 会返回 {form: form, name: 'XXX'} 格式的对象,建议使用 form.get('XXX')
- FormField 中必须并且有仅能有一个表单项,与 getFieldDecorator 的要求一致

```js
import {Form} from 'antd-form-plus'

const FormItem = Form.Item;
const FormField = Form.Field;

@Form.create({
fields: ({demo}) => demo.fields
})
class BasicForms extends React.Component {

handleSubmit = e => {
const {dispatch, form} = this.props;
e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
// submit form
}
});
};

render(){

const {form} = this.props;

return (




















);
}
}
```

## License

[MIT](http://opensource.org/licenses/MIT) Copyright (c) 2019