当前位置: 首页 > 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/

相关文章:

React-Hooks-Form 集成 Zod 校验库

React-Hooks-Form 集成 Zod 校验库 首先需要安装 react hooks form 官方提交的解析器 npm install hookform/resolvers再安装校验库 npm install zod它不仅支持 Zod 校验库同时还支持目前各种主流的校验库比如&#xff1a;Yup、Zod、Joi、Ajv、Vest、Custom 具体查看官方文…...

kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件

场景&#xff1a;交流学习群里面有小伙伴咨询kettle中的javascript代码步骤如何调用外部js文件中的函数&#xff0c;觉得有点意思的&#xff0c;于是就抽时间整理了一下。 1、外部js文件为test.js&#xff0c;代码如下&#xff1a; function test(param){return "接收到了…...

比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程

比传统机器学习更先进的深度学习神经网络的二分类建模全流程分析教程 深度学习介绍和与传统机器学习的区别 深度学习&#xff08;Deep Learning&#xff09;是一种机器学习的分支&#xff0c;基于多层神经网络模型&#xff0c;能够自动从大量数据中学习特征并进行预测。深度学…...

TeamTalk梳理概括

文章目录 即时通讯重点概括展开聊聊单聊消息流转流程展开聊聊群聊消息流转流程群成员管理数据库MySQL连接池设计redis连接池设计文件传输原理实时性并发能力 db_proxy_server reactor响应处理流程单聊消息消息如何封装&#xff1f;如何保证对端完整解析一帧消息&#xff1f;协议…...

构建“零工市场小程序”,服务灵活就业“大民生”

如今&#xff0c;灵活就业已成为现代劳动力市场的重要组成部分。然而&#xff0c;这一就业形态也面临着信息不对称、匹配效率低下等一系列挑战。为有效解决这些问题&#xff0c;构建一个高效、便捷的“零工市场小程序”显得尤为重要。 二、零工市场现状与挑战 市场规模与增长趋…...

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 苹果格式

【组件】前端js HEIC/HEIF 转换为JPEG、PNG或GIF格式 Heic2any: Client-side conversion of HEIC/HEIF image files to JPEG,PNG, or GIF in the browser.https://alexcorvi.github.io/heic2any/#demo GitHub - alexcorvi/heic2any: Converting HEIF/HEIF image formats to PN…...

Vue3中slot插槽的几种使用实践

【1】默认插槽 父组件 <Category title"今日美食城市"><img :src"imgUrl" alt""> </Category>子组件 <div class"category"><h2>{{title}}</h2><slot>默认内容</slot> </div&g…...

SSH工具 MobaXterm的使用与快捷配置

软件下载/安装与链接服务器/本地虚拟机 文章目录 软件下载/安装与链接服务器/本地虚拟机软件下载软件安装使用软件链接非本地机器并设置用户密码我不想有确定密码的弹窗 其余便捷配置配置右键粘贴SSH链接设置 软件下载 如果你访问不了这个网址&#xff0c;可以评论区找博主或者…...

git 远程分支同步本地落后的有冲突的分支

如果你的本地分支已经修改了很多代码&#xff0c;但同时也已经落后于远程分支。这个时候你需要在主分支上拉最新的代码&#xff0c;然后切换到你的分支。 如主分支是 main &#xff0c;从分支是xing。 首先切换到子分支 $ git checkout xing 然后请求merge主分支main的代码 …...

如何基于Java解析国密数字证书

一、说明 随着信息安全的重要性日益凸显&#xff0c;数字证书在各种安全通信场景中扮演着至关重要的角色。国密算法&#xff0c;作为我国自主研发的加密算法标准&#xff0c;其应用也愈发广泛。然而&#xff0c;在Java环境中解析使用国密算法的数字证书时&#xff0c;我们可能…...

java实现系统文件管理

java实现系统文件管理 环境&#xff1a;jdk17springbootVueElementUI 背景&#xff1a;公司所做的项目需要别的系统向我们服务器上传文件&#xff0c;当我们需要查看这些文件什么时候上传的、文件数据是怎样的&#xff0c;只能去机房&#xff0c;排查问题效率较低&#xff0c;…...

pytorch快速入门(一)—— 基本工具及平台介绍

前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置&#xff1a;Anaconda Python编译器&#xff1a;pycharm、jupyter 两大法宝函数 dir&#xff08;&#xff09;&#xff1a;知道包中有什么东西&#xff08;函数 / 属性..…...

『功能项目』怪物的有限状态机【42】

本章项目成果展示 我们打开上一篇41项目优化 - 框架加载资源的项目&#xff0c; 本章要做的事情是按照框架的思想构建项目并完成怪物的自动巡逻状态&#xff0c;当主角靠近怪物时&#xff0c;怪物会朝向主角释放技能 首先新建脚本&#xff1a;BossCtrl.cs (通常把xxxCtrl.cs脚…...

【C++】模板进阶:深入解析模板特化

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与Queue 本章将…...

Python数据分析-世界上最富有的1000人

一、研究背景 随着全球化的加速发展和技术的进步&#xff0c;财富分配问题日益成为全球关注的焦点。财富的不平等现象日益明显&#xff0c;少数极富有的个人掌握了全球大部分的财富资源。了解全球最富有个人的财富分布及其背后的行业和国家因素&#xff0c;对于分析全球经济趋…...

CSS中隐藏滚动条的同时保留滚动功能

在CSS中&#xff0c;我们可以通过一些技巧来隐藏滚动条&#xff0c;同时保留滚动功能。以下是几种常用的方法和具体的实现步骤。 1. 使用 overflow 和 ::-webkit-scrollbar 这种方法适用于大多数现代浏览器。通过设置 overflow 属性启用滚动&#xff0c;同时利用 ::-webkit-s…...

我的标志:奇特的头像

<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>与妖为邻</title><style>figu…...

中国空间计算产业链发展分析

2024中国空间计算产业链拆解 空间计算设备主要包括AR、VR、MR等终端设备。VR设备通常包括头戴式显示器&#xff08;VR头盔&#xff09;、手柄或追踪器等组件&#xff0c;用以完全封闭用户视野&#xff0c;营造虚拟环境体验。这些设备配备高分辨率显示屏、内置传感器和跟踪器。 …...

DAY14信息打点-JS 架构框架识别泄漏提取API 接口枚举FUZZ 爬虫插件项目

本课意义&#xff1a; 1.如何从表现中的JS提取价值信息 2.如何从地址中FUZZ提取未知的JS文件 3.如何从JS开放框架WebPack进行测试 一、JS 前端架构-识别&分析 在JS中寻找更多的URL地址&#xff0c;在JS代码逻辑&#xff08;加密算法、APIKey配置、验证逻辑&#xff09;中进…...

TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错

目录 1&#xff0c;前言2&#xff0c;二者关系2.1&#xff0c;使用 3&#xff0c;遇到的问题3.1&#xff0c;TS 中使用 JS 1&#xff0c;前言 通过 Vite 创建的 Vue3 TS 项目&#xff0c;根目录下会有 tsconfig.json 和 tsconfig.node.json 文件&#xff0c;并且存在引用关系…...

SO(3) (本质理解)

一、SO(3) 是什么 SO(3)&#xff08;Special Orthogonal Group&#xff09;&#xff1a; 几何理解&#xff08;非常重要&#xff09; SO(3) 表示&#xff1a; “刚体绕某个轴旋转一个角度” 任何旋转都可以表示为&#xff1a; 一个单位轴 一个角度 这就是&#xff1a; 轴…...

5大场景全覆盖:BilibiliDown视频下载工具的全方位应用指南

5大场景全覆盖&#xff1a;BilibiliDown视频下载工具的全方位应用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirro…...

重构游戏串流体验:Sunshine如何突破设备与场景限制

重构游戏串流体验&#xff1a;Sunshine如何突破设备与场景限制 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 当你想在平板上玩3A游戏时&#xff0c;最大的障碍是什么&#xff1f…...

Unity网格变形系统深度解析:从基础架构到高级应用实践

Unity网格变形系统深度解析&#xff1a;从基础架构到高级应用实践 【免费下载链接】Deform A fully-featured deformer system for Unity that lets you stack effects to animate models in real-time 项目地址: https://gitcode.com/gh_mirrors/de/Deform Deform是一个…...

颠覆传统计算的开源利器:Calcpad工程计算自动化全场景应用指南

颠覆传统计算的开源利器&#xff1a;Calcpad工程计算自动化全场景应用指南 【免费下载链接】Calcpad Free and open source software for mathematical and engineering calculations. 项目地址: https://gitcode.com/gh_mirrors/ca/Calcpad 核心价值&#xff1a;重新定…...

浏览器魔法师:Greasy Fork用户脚本终极指南,5分钟解锁网页超能力

浏览器魔法师&#xff1a;Greasy Fork用户脚本终极指南&#xff0c;5分钟解锁网页超能力 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 你是否厌倦了网页上烦人的广告&#xff1f;想要一…...

实战应用:利用快马平台模拟鸿蒙pc版与手机的笔记跨设备同步功能

最近在研究鸿蒙系统的跨设备协同功能&#xff0c;特别是PC端和手机端之间的数据同步场景。作为一个开发者&#xff0c;我很好奇这种分布式能力在实际项目中如何落地。于是我用InsCode(快马)平台快速搭建了一个模拟原型&#xff0c;下面分享下实现思路和过程。 项目整体设计 这个…...

LongCat-Video-Avatar 正式发布,实现开源SOTA级拟真表现

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

解决vue项目 vscode查找文件应用 ctrl+鼠标点击import无法跳转的问题

踩坑 前提是 AI的解决方案处理完&#xff0c;你的vue文件一体的script可以查看里面的import文件引用&#xff0c;但是独立的index.js-import无论如何都查看不了文件应用。 解决办法 如下是我的tscoonfig.json。 实际上就是加上 【“allowJs”: true, //为了查看文件引用&#x…...

HardSourceWebpackPlugin源码解析:从入口到缓存写入的完整流程

HardSourceWebpackPlugin源码解析&#xff1a;从入口到缓存写入的完整流程 【免费下载链接】hard-source-webpack-plugin 项目地址: https://gitcode.com/gh_mirrors/ha/hard-source-webpack-plugin HardSourceWebpackPlugin是一个为Webpack构建过程提供持久化缓存的插…...