默认值的处理
Drip Form 如何设置表单数据的默认值?有以下两种方法
- 通过formData prop设置
- 通过
unitedSchema
的default
关键字设置
本章节主要介绍第二种方式
default 关键字设置默认值
原理
ajv 会在校验时,将 unitedSchema 的 default 关键字自动生成相应的数据结构
number、string、boolean 类型设置默认值
代码示例
在 unitedSchema
中配置 default
关键字来设置表单初始值。
- App.tsx
- unitedSchema.ts
import DripForm from '@jdfed/drip-form'
import antd from '@jdfed/drip-form-theme-antd'
import unitedSchema from './unitedSchema'
import '@jdfed/drip-form/dist/index.css'
import '@jdfed/drip-form-theme-antd/dist/index.css'
import 'antd/dist/antd.css'
function App() {
return (
<DripForm
// 表单配置文件
unitedSchema={unitedSchema}
// 导入组件
uiComponents={{ antd }}
></DripForm>
)
}
export default App
// 表单配置文件
export default {
type: 'object',
showError: 'change',
ui: {},
theme: 'antd',
schema: [
{
type: 'string',
title: '输入框',
default: '111',
ui: {
type: 'text',
style: {
width: '100%',
},
theme: 'antd',
},
fieldKey: 'text_PYtl7v',
},
{
type: 'number',
title: '数字输入框',
default: 222,
ui: {
type: 'number',
theme: 'antd',
},
fieldKey: 'number_WzUFr4',
},
{
type: 'boolean',
title: '开关',
default: true,
ui: {
type: 'switch',
theme: 'antd',
},
fieldKey: 'switch_2CKiKE',
},
],
}
数组、对象设置默认值
给数组的子项、对象的子属性设置默认值时,需要同时给数组或对象本身设置默认值。
为什么给数组子项、对象中子属性设置默认值时,需要对对象或数组本身设置默认值?
代码示例
在 unitedSchema
中配置 default
关键字来设置表单初始值。
- App.tsx
- unitedSchema.ts
import DripForm from '@jdfed/drip-form'
import antd from '@jdfed/drip-form-theme-antd'
import unitedSchema from './unitedSchema'
import '@jdfed/drip-form/dist/index.css'
import '@jdfed/drip-form-theme-antd/dist/index.css'
import 'antd/dist/antd.css'
function App() {
return (
<DripForm
// 表单配置文件
unitedSchema={unitedSchema}
// 导入组件
uiComponents={{ antd }}
></DripForm>
)
}
export default App
// 表单配置文件
export default {
showError: 'change',
type: 'object',
ui: {},
theme: 'antd',
schema: [
{
type: 'array',
title: '数组容器',
ui: {
mode: 'add',
type: 'array',
},
items: {
type: 'object',
title: '',
ui: {
type: 'object',
},
schema: [
{
type: 'boolean',
title: '开关',
ui: {
type: 'switch',
},
default: true,
fieldKey: 'switch_mDJ7Lz',
},
{
type: 'string',
title: '单选',
ui: {
type: 'radio',
options: [
{
label: '是',
value: 1,
},
{
label: '否',
value: 0,
},
],
},
default: 1,
fieldKey: '0',
},
],
},
default: [{ '0': 1, switch_mDJ7Lz: true }],
fieldKey: 'array_4LrpU6',
},
{
type: 'object',
title: '对象容器',
ui: {
type: 'object',
},
schema: [
{
type: 'string',
title: '文本',
ui: {
type: 'text',
},
default: '文本框',
fieldKey: 'null_VsLlWt',
},
],
default: {},
fieldKey: 'object_lcALiU',
},
],
};