当前位置: 首页 > news >正文

React-Hooks-Form 集成 Zod 校验库

React-Hooks-Form 集成 Zod 校验库

首先需要安装 react hooks form 官方提交的解析器

npm install @hookform/resolvers

再安装校验库

npm install zod

它不仅支持 Zod 校验库同时还支持目前各种主流的校验库比如:Yup、Zod、Joi、Ajv、Vest、Custom

具体查看官方文档: https://react-hook-form.com/docs/useform#resolver

我们就拿 Zod 举例:

import { useState } from "react";
import { SubmitHandler, useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod"
import * as z from "zod"// 定义校验参数
const schema = z.object({name: z.string().min(1, { message: "名称不能为空" }),age: z.number().min(1, { message: "年龄不能小于1" }).max(99, { message: "年龄不能超过99" }),
})type Schema = z.infer<typeof schema>export default () => {const [defaultValues, setDefaultValues] = useState<Schema>({ name: "", age: 0 })const { register, handleSubmit, formState: { errors } } = useForm<Schema>({// 默认值defaultValues,// 配置校验解析器resolver: zodResolver(schema),});const onSubmit: SubmitHandler<Schema> = (data, event) => {// 阻止默认提交行为event?.preventDefault();console.log(data)}return (<><form onSubmit={handleSubmit(onSubmit)}><input {...register("name")} type="text" /><span>{errors.name && errors.name.message}</span><input {...register("age")} type="text" /><span>{errors.age && errors.age.message}</span><button type="submit">提交</button></form></>)
}

详细的校验配置信息可查看 Zod 官方文档:https://zod.dev/

http://www.lryc.cn/news/439423.html

相关文章:

  • kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件
  • 比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程
  • TeamTalk梳理概括
  • 构建“零工市场小程序”,服务灵活就业“大民生”
  • 【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 苹果格式
  • Vue3中slot插槽的几种使用实践
  • SSH工具 MobaXterm的使用与快捷配置
  • git 远程分支同步本地落后的有冲突的分支
  • 如何基于Java解析国密数字证书
  • java实现系统文件管理
  • pytorch快速入门(一)—— 基本工具及平台介绍
  • 『功能项目』怪物的有限状态机【42】
  • 【C++】模板进阶:深入解析模板特化
  • Python数据分析-世界上最富有的1000人
  • CSS中隐藏滚动条的同时保留滚动功能
  • 我的标志:奇特的头像
  • 中国空间计算产业链发展分析
  • DAY14信息打点-JS 架构框架识别泄漏提取API 接口枚举FUZZ 爬虫插件项目
  • TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
  • revisiting拉普拉斯模板
  • 深入分析计算机网络性能指标
  • pyflink 安装和测试
  • 《网络故障处理案例:公司网络突然中断》
  • JavaSE:9、数组
  • 【裸机装机系列】2.kali(ubuntu)-裸机安装kali并进行磁盘分区-2024.9最新
  • 解决:Vue 中 debugger 不生效
  • Mac笔记本上查看/user/目录下的文件的几种方法
  • 工程师 - ACPI和ACPICA的区别
  • 一文快速上手-create-vue脚手架
  • 笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析