useAutoForm
用于创建类型化 Zod Schema 和管理 AutoForm 控件的 composable。
用法
使用自动导入的 useAutoForm composable 创建类型化的 Zod Schema,为 AutoForm 组件提供验证规则和控件配置。
<script setup lang="ts">
const { afz } = useAutoForm()
const schema = afz.object({
username: afz.string('用户名不能为空'),
email: afz.email('请输入有效的邮箱地址'),
age: afz.number().min(18, '必须年满 18 岁')
})
const formData = ref()
</script>
<template>
<MAutoForm v-model="formData" :schema="schema" />
</template>
useAutoForm返回增强的 Zod 工厂对象afz,支持为 Schema 附加 AutoForm 元数据。- 元数据会自动在 Zod 的链式调用中持久化(如
.optional(),.nullable(),.default()等)。
使用
afz 工厂创建的 Schema 会自动拦截 Zod 的克隆方法,确保元数据在链式调用时不会丢失。自定义控件注册
当使用自定义控件时,需要通过 defineControl 辅助函数定义:
const { afz, defineControl } = useAutoForm({
myInput: defineControl({
component: MyCustomInput,
controlProps: { class: 'w-full' }
})
})
// 现在可以在 Schema 中使用
const schema = afz.string({
type: 'myInput',
controlProps: { variant: 'outline' }
})
API
useAutoForm()
useAutoForm(controls?: AutoFormControls): UseAutoFormReturn
创建 AutoForm 工厂和控件管理器。
Parameters
controls
AutoFormControls
自定义控件映射对象,用于扩展或覆盖默认控件,配合
defineControl 定义(见上方「自定义控件注册」)。Returns
afz
TypedZodFactory
类型化的 Zod 工厂对象,用于创建带元数据的 Schema。
defineControl
Function
定义控件的辅助函数。
DEFAULT_CONTROLS
Object
默认控件映射对象。
controls
Object
传入的自定义控件映射。
getAutoFormMetadata
Function
从 Schema 中提取自定义元数据的工具函数。
Changelog
No recent changes