Form 表单
封装了表单组件,能快速完成表单的布局、表单验证、复杂对象表单
表单包含了一系列的组件或者方法,包括下面这些
- Form 表单
- Form.Item 表单项
- Form.Submit 表单提交
- Form.Reset 表单重置
- Form.Object 对象表单
- Form.Array 数组表单
- Form.ArrayAction 数组表单操作管理
- Form.useFormContext 获取表单上下文
- Form.useFormItemProxy 给表单代理值和事件
示例
import {
Header, ScrollView, TopView, Form,
Card, Divider, Input, PickerDate,
PickerSelect, Textarea, Row
} from '@/duxui'
const defaultValues = {
}
const rules = {
name: [
{
required: true,
type: 'string',
message: '输入框为必填字段'
}
],
tel: [
{
required: true,
type: 'string',
message: '介绍为必填字段'
}
]
}
export default function FormExample() {
return <TopView>
<Header title='Form' />
<Form onSubmit={console.log} defaultValues={defaultValues}>
<ScrollView>
<Card margin verticalPadding={false}>
<Divider.Group>
<Form.Item label='输入框' field='name' rules={rules.name}>
<Input placeholder='请输入' align='right' grow />
</Form.Item>
<Form.Item label='介绍的输入' field='tel' desc='输入框介绍,这是输入框介绍' rules={rules.tel}>
<Input placeholder='请输入' />
</Form.Item>
<Form.Item label='日期' field='date'>
<PickerDate title='日期' placeholder='请选择日期' grow />
</Form.Item>
<Form.Item label='选择' field='sex'>
<PickerSelect title='选择' placeholder='请选择性别' range={['男', '女']} grow />
</Form.Item>
<Form.Item label='介绍' field='desc' direction='vertical' >
<Textarea placeholder='请输入介绍' maxlength={100} />
</Form.Item>
</Divider.Group>
</Card>
<Row className='p-3 gap-3'>
<Form.Reset className='flex-grow'>重置</Form.Reset>
<Form.Submit className='flex-grow' type='primary'>提交</Form.Submit>
</Row>
</ScrollView>
</Form>
</TopView>
}
Props
defaultValues
表单默认值,也可以是一个异步函数,其返回值作为默认值,用在一些需要远程加载数据的场景
类型 | 必填 | 默认值 |
---|---|---|
object | () => Promise<{}> | 否 |
onChange
表单改变事件
类型 | 必填 | 默认值 |
---|---|---|
(values: object) => void | 否 |
onSubmit
表单提交事件,通常是由 Form.Submit
提交的
类型 | 必填 | 默认值 |
---|---|---|
(values: object) => void | 否 |
disabled
是否禁用表单
类型 | 必填 | 默认值 |
---|---|---|
boolean | 否 | false |
vertical
表单项是否垂直布局
类型 | 必填 | 默认值 |
---|---|---|
boolean | 否 | false |
labelProps
全局传递给标签的属性
类型 | 必填 | 默认值 |
---|---|---|
TextProps | 否 |
containerProps
全局传递给项目容器的属性
类型 | 必填 | 默认值 |
---|---|---|
SpaceProps | 否 |
itemPadding
是否使用项目的内边距,关闭内边距后需要自己控制项目边距
类型 | 必填 | 默认值 |
---|---|---|
boolean | 否 | true |
children
传入子元素或者一个函数组件,从这个组件中可以获取到当前表单的多个属性,对标单进行操作
类型 | 必填 | 默认值 |
---|---|---|
ReactElement | Component | 否 |