使用 VeeValidate 进行基于模式的验证
useForm()、useField()、yup 模式、错误消息,以及处理异步验证。
使用 VeeValidate 进行基于模式的验证 是 CoddyKit 上的免费 Vue Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Vue Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Vue Academy 课程共包含 4 节课。
使用 VeeValidate 扩展验证能力
随着表单变大,手写验证会变得繁琐。VeeValidate 是一个广受欢迎的 Vue 库,它管理表单状态,针对 schema 执行验证,并以响应式方式提供错误信息。
基于 schema 的验证
您不必手动编写检查,而是可以在 schema 中以声明方式描述规则。将 VeeValidate 与 yup 结合,就能流畅地构建这个 schema。
<script setup>
import * as yup from 'yup'
const schema = yup.object({
name: yup.string().required(),
email: yup.string().email().required()
})
</script>使用 useForm 设置表单
useForm 会初始化表单级状态和验证。将 schema 作为 validationSchema 传入,它就会把所有内容连接起来。
<script setup>
import { useForm } from 'vee-validate'
const { handleSubmit, errors } = useForm({
validationSchema: schema
})
</script>使用 useField 连接字段
useField 按名称注册一个输入框。它会返回字段的 value、对应的 errorMessage 和 handleBlur 处理程序。
<script setup>
import { useField } from 'vee-validate'
const { value: name, errorMessage, handleBlur } = useField('name')
</script>在模板中绑定字段
使用 v-model 绑定返回的 value,并将 @blur 连接到 handleBlur,以便在失焦时进行验证。
<template>
<input v-model="name" @blur="handleBlur" />
<span>{{ errorMessage }}</span>
</template>显示错误消息
每个字段都会提供自己的 errorMessage,它是一个响应式字符串。字段有效时该字符串为空,无效时则包含 schema 消息。
<template>
<input v-model="name" @blur="handleBlur" />
<span v-if="errorMessage" class="error">{{ errorMessage }}</span>
</template>处理提交
handleSubmit 会包装您的提交函数。它会先运行验证,只有在整个表单有效时,才会使用这些值调用您的回调函数。
<script setup>
const onSubmit = handleSubmit((values) => {
console.log('valid form', values)
})
</script>
<template>
<form @submit="onSubmit">...</form>
</template>表单级错误
useForm 提供的 errors 对象会将字段名称映射到当前消息,适合用于摘要或条件式界面。
<script setup>
const { errors } = useForm({ validationSchema: schema })
// errors.name, errors.email
</script>为何使用库
- 声明式规则定义取代重复的手动检查。
- 内置失焦、变更和提交验证时机。
- 每个字段都有
errorMessage,表单级别有errors。 - 通过 yup 可以轻松实现异步规则和跨字段规则。
组件式 API 与组合式 API
VeeValidate 还提供 <Form> 和 <Field> 组件,适合以模板为主的风格。组合式函数 useForm 和 useField 更适合 <script setup>,也能提供更多控制。
手动验证与基于 schema 的验证
手动验证有助于理解验证机制,适合极小型表单。使用 VeeValidate 和 yup 进行基于 schema 的验证,则可以用少得多的代码和更少的错误应对大型复杂表单。
快速检查
测试您对 VeeValidate 的了解。
回顾
使用 VeeValidate 进行基于 schema 的验证:
- 在
yupschema 中描述规则,并将其作为validationSchema传入。 useForm管理表单状态、errors和handleSubmit。- 对于每个输入框,
useField返回value、errorMessage和handleBlur。 - 对于大型表单,它的扩展性远胜于手动验证。
常见问题解答
「使用 VeeValidate 进行基于模式的验证」课时是免费的吗?
是的 — 「使用 VeeValidate 进行基于模式的验证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Vue Academy 课程的其余内容,请升级到 CoddyKit PRO。 Vue Academy 课程共包含 4 节课。
「使用 VeeValidate 进行基于模式的验证」这节课中我会学到什么?
useForm()、useField()、yup 模式、错误消息,以及处理异步验证。 你通过在浏览器中直接运行的动手代码来练习 Vue Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Vue Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Vue Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用 VeeValidate 进行基于模式的验证」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Vue Academy 课中编写并运行代码吗?
能。每节 Vue Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 所有表单元素上的 v-model
- 表单提交与重置
- 手动验证模式
- 使用 VeeValidate 进行基于模式的验证