随着Next.js 13引入Server Actions,以及react-hook-form和zod等库的流行,我们有了更强大的工具来构建高效、类型安全且用户友好的表单。...react-hook-form:用于构建灵活和高效的表单的React库。zod:TypeScript优先的模式声明和验证库。为什么选择这种方法?1....表单设置:使用react-hook-form的useForm hook设置表单,并使用zodResolver进行表单验证。提交处理:当表单提交时,react-hook-form首先进行客户端验证。...如果有错误,使用react-hook-form的setError函数显示错误消息。use server or use client,this is a question了解下原理,是非常有必要的。...验证一致性:客户端和服务器使用相同的验证规则。性能优化:react-hook-form的非受控组件方法提供了优秀的性能。用户体验:加载状态、错误处理等都得到了优雅的处理。
没有人喜欢创建和重新创建带有验证的复杂表单,包括React开发人员。 在React中构建表单时,必须使用一个表单库,该库提供了许多方便的工具,而且不需要太多代码。...让我们看看如何在你自己的项目中使用 React-hook-form 来为你的React应用程序构建丰富的、有特色的表单。 安装 让我们来讨论一个典型的用例:一个用户注册到我们的应用程序。...项目启动并运行,我们将从安装 React-hook-form库开始: npm i react-hook-form 使用 useForm hook 要使用 react-hook-form,我们只需要调用...例如,在某些情况下,您希望它在onSubmit中创建一个不同的错误或清除一个错误,就可以使用这些方法。...总结 我希望本文向您展示了如何在React应用程序中更容易地创建功能性表单。 还有很多与react-hook形式相关的特性我没有在这里介绍。点击这里,官方文档应该涵盖你能想到的任何用例。
在本文中将介绍在 React 中受控和非受控表单是如何使用的,以及现代化使用 hooks 来管理 form 状态。...可以通过 state 的值来进行表单元素的验证,并提供实时的错误提示。...使用场景: 对于简单的表单,不需要对用户输入进行验证和处理。 需要获取表单元素的值进行一些简单的操作,如发送请求或更改 URL 等。...不同于 rc-field-form 中使用的受控表单来做表单状态管理,react-hook-form 使用了 React 的 useRef 和 useReducer 来处理表单数据的状态,而不是使用...react-hook-form 的最简 demo 如下 import React from "react"; import { useForm } from "react-hook-form"; function
官网:react-hook-form 真的非常好用,个人觉得。 原生input,form多好啊。也可以结合ant 等的表单进行使用,更多的校验规则也可以指定别的库。 更多api可以查看官网。...[uvJayq.png] 开始 安装 yarn add react-hook-form 使用 在register表单里引入 import React from 'react'; import { Link...如果不通过验证就会返回一个错误对象。 我们要使用这个错误对象,需要通过使用name属性来获取对应的错误消息。 我们可以进行错误的设置,也可以进行错误的清除。...然后我们再把错误消息渲染出来提示就好了。 校验指定 指定邮箱的input类型好像默认会使用邮箱的校验错误提示而不出现自定义提示??? 暂时不想了。 指定一个正则来校验邮箱格式:。...clearError()://两个表单值一样的时候清除错误 "confirm password fail",//否则返回一个指定的错误消息 }} 表单提交 handleSubmit接受一个函数返回表单的值
如果你们还没有使用它的话,应该尽快将它们加入代码库。它们将使您的编码生活变得更加轻松和愉快。 在React开发中,保持干净的代码风格,可读性,可维护性,更少的代码行以及可重用性至关重要。...hook本身使用TypeScript,甚至支持SSR和GraphQL。它返回响应,加载,错误数据和不同的请求方法,例如Get,Post,Put,Patch和Delete。...它是React钩子库(14.8k)中GitHub启动数量最多的平台之一。.../react-hook-form/react-hook-form 使用案例: import React from "react"; import { useForm } from "react-hook-form...为此编写的文档非常好,其中显示了许多示例,这些示例对于开始使用库/自己做钩子来说绰绰有余。
,最终,只能重新造了一个轮子,延续 Mobx 的核心思想的 @formily/reactive 这里提一下 react-hook-form ,非常流行,号称业界性能第一的表单方案,我们看看它最简单的案例...: import React from 'react' import ReactDOM from 'react-dom' import { useForm } from 'react-hook-form...('root')) 虽然值管理做到了精确渲染,但是在触发校验的时候,还是会导致表单全量渲染,因为 errors 状态的更新,是必须要整体受控渲染才能实现同步,这仅仅只是校验会全量渲染,其实还有联动,react-hook-form...比如一个字段要控制另一个字段的显示隐藏。...所以,我们的表单完全可以使用协议来描述了,不管是再复杂的布局,还是很复杂的联动,都能做到可配置。
人们因为能忘却,所以自己能渐渐的脱离了受过的苦痛,也因为能忘却,所以照样得再犯前人的错误。...——鲁迅 探索 Zod:TypeScript-first 的模式验证库 在现代 JavaScript 和 TypeScript 开发中,数据验证是不可或缺的一部分。...本文将带你了解 Zod 的核心功能、使用方法及其开发者友好的特性。 什么是 Zod? Zod 是一个专为 TypeScript 设计的模式声明和验证库,旨在简化开发者的工作。...例如,与 React Hook Form 集成: 123456789101112131415161718192021222324 import { useForm } from "react-hook-form...{...register("age")} /> 提交 );} 对比其他库 对比其他常见的模式验证库(如
好事发生这里推荐一篇实用的文章:《Next.js高级表单处理:整合Server Actions、FormData、react-hook-form和zod》,作者:【老码小张】。...本文深入探讨了如何结合Next.js Server Actions、FormData、react-hook-form和zod等技术,创建一个高效、类型安全且用户友好的表单处理解决方案。...食品消费偏好分析在食品行业中具有重要意义,它帮助企业了解消费者的购买习惯和偏好,从而优化产品组合,提升客户满意度,并制定有效的市场策略。...数据预处理在使用数据训练模型之前,需要对数据进行预处理,包括缺失值处理、数据规范化和特征工程等操作。...模型训练使用训练数据集训练模型,并在验证数据集上评估模型性能。
前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试异步组件。...登录测试 先来实现登录页,先脑补一个效果图吧 我们先来写下测试用例 界面包含账号和密码输入框 接口请求包含 username 和 password 防止登录重复点击 登录成功跳转页面 登录失败显示错误信息...,若在生产环境中,我推荐使用 react-hook-form 测试提交 接下来测试下 onSubmit 方法必须包含 username 和 password, 我们需要模拟用户输入,这个时候我们需要安装...测试用例: 失败后文档中显示服务端的消息 失败后按钮又显示登录并且可以点击 test("onSubmit failures", async () => { const message = "账号或密码错误...loading 请求成功显示博客列表 列表为空显示暂无数据 请求失败显示服务端错误 博客列表代码 下面的代码中, 使用了 react-use,首先我们先要安装这个包 import React from
除了响应数据之外,还将附加一个 httpOnly cookie,从此时起用于身份验证请求 每当用户进行身份验证时,我们将从响应中的用户对象存储在 react-query 缓存中,并使其对应用程序可用 由于身份验证是基于...(user); }, }); return { submit, isLoading, }; }; 在登录表单中,我们将使用 useLogin hook 来处理登录请求...import { useForm } from "react-hook-form"; import { Button } from "@/components/button"; import { InputField...(); }, }); return { submit, isLoading, }; }; 在登出按钮中,我们将使用 useLogout hook 来处理注销请求...我们希望它是全局的,因为我们想从应用程序的任何地方显示这些通知。 为了处理全局状态,我们将使用 Zustand,这是一个轻量级且非常简单易用的状态管理库。
本文将详细介绍如何在 React 中实现鼠标悬停显示文本的功能,并提供示例代码帮助你理解和应用这个功能。...使用状态管理在 React 中,我们可以使用状态管理来处理鼠标悬停事件,并根据悬停状态来控制文本的显示与隐藏。...在示例代码中,我们使用了 onMouseEnter 和 onMouseLeave 事件来监听鼠标进入和离开元素的事件。你也可以使用其他鼠标事件,如 onMouseOver 和 onMouseOut。...在 React 中,有一些流行的库可以帮助我们实现鼠标悬停显示文本的功能,如 react-tooltip 和 react-popper-tooltip继续上述内容:使用 react-tooltipreact-tooltip...结论本文详细介绍了在 React 中实现鼠标悬停显示文本的两种方法:使用状态管理和使用第三方库。通过手动管理状态或使用第三方库,我们可以根据用户的悬停行为来显示和隐藏文本,提供更好的用户体验和交互。
市面上已经有很多关于 TypeScript 泛型的文章和教程,所以本文将聚焦于如何在 React 组件中使用泛型,让你的组件变得更加灵活和可重用。...组件使用 fetch 方法从指定的 URL 抓取数据,并在抓取成功后调用渲染函数来展示数据。同时,组件还处理了加载和错误状态。...这展示了泛型在 React 组件中的强大作用,我们可以用同一个组件处理不同类型的数据获取和展示。 三、使用泛型创建通用的 React 表单组件 在实际开发中,表单是我们常用的组件之一。...尽管在实际项目中我们通常会使用像 Formik 或 react-hook-form 这样的库来处理表单,但为了演示泛型的强大之处,我们将从头开始创建一个简单的表单组件。...希望这篇文章能让你更好地理解如何在 React 组件中使用泛型,并让你的组件变得更加灵活和可重用。如果你有任何问题或反馈,欢迎在评论区留言与我互动。
这在实现当今应用程序中使用的其他行为时变得更加复杂: 跟踪加载状态以显示 UI 加载指示器 避免对相同数据进行重复请求 进行乐观更新以提高 UI 响应速度 随着用户与 UI 进行交互,管理缓存的生命周期...RTK Query 从先驱解决数据获取问题的其他工具(如 Apollo Client、React Query、Urql 和 SWR)中获得灵感,但在其 API 设计中增加了独特的方法: 数据获取和缓存逻辑是构建在...并在组件挂载和卸载时管理缓存数据的生命周期 RTK Query 提供了“缓存条目生命周期”选项,可以通过 WebSocket 消息流式传输缓存更新,以在获取初始数据后使用 我们有从 OpenAPI 和...Formik 是一个小型库,可以帮助您解决以下三个最令人讨厌的问题: 将值放入和取出表单状态 验证和错误消息 处理表单提交 通过将所有这些放在一个地方,Formik 可以让事情井然有序,使得测试、重构和理解您的表单变得轻而易举...不是因为我认为 React 在实现表单方面采取了错误的方法,而是因为在使用 React 时,表单是最具挑战性的问题。 许多框架都有自己的解决方案来处理表单。AngularJS 在这方面做得非常好。
图片 本文完整版:《5款 React 实时消息提示通知(Message/Notification)组件推荐与测评》 React 消息提示通知组件(Message / Notification)是我们日常开发中经常使用的组件...,它可用作与用户交互的反馈提示,信息提交成功、错误、操作警告等场景使用。...- 专注实时消息提示 各类样式随意修改 你想要的它都有 图片 react-toastify 是简洁高效的消息提示组件库,常规的成功、错误、警告样式随意挑选。...傻瓜式配置,10秒钟完成所有设置工作 可定制开发,简单便捷 可关闭滑动动画效果 可在提示框中嵌入 React 组件 可定义每个 toast 行为 有进度条显示 白天夜间模式自动切换 扩展阅读:《7 款顶级好用的...扩展阅读:《React Echarts 使用教程 - 如何在 React 中加入图表》
在做的一个小项目,页面加载后使用ajax读取本地REST数据,保存在状态中,稍后在form的选择下拉框中显示,代码如下: 150 componentDidMount() { 151...165 console.log(err.Message); 166 }, 167 })}) // 此处添加}) 168 } 修改后手机谷歌浏览器显示正常...这个$(function(){}的功能何在? javascript中$(function() {....})...,即在页面加载完成后才执行某个函数,如果函数中要操作 DOM,在页面加载完成后再执行会更安全,所以在使用 jQuery 时这样的写法很常见。...可能的原因是手机端刘览器与电脑端浏览器页面加载中处理脚本时间不同,前者是未等页面加载结束即执行jquery脚本,后者则相反,所以后者不需$(function(){}也可正常显示。
这两种不同的设计模式,通常用于软件系统中实现组件之间的数据共享和依赖管理。作为耳熟能详的常见功能,这里就不详细展开定义了,我们单纯的从使用角度去解读他们的区别。...他们通常在跨组件通信中被提到,比如,React、Svelte、SolidJS都用了Context上下文模式,Vue、Angular中使用了依赖注入模式。...Vue3中使用上下文模式❝ 注意:这不是依赖Vue组件层级树的上下文。React的上下文系统是依赖于组件层级树的。换句话说。这是一个外部系统。...React中使用依赖注入❝ 注意:同理。这是一个外部系统。...为了可以将需要的数据注入到组件中,我们需要在此基础上提供一个高阶组件将数据注入到其中:import React from "react";const dependencies = {}export function
下图显示了 TypeScript 与 ES5、ES2015 和 ES2016 之间的关系: ?...react-hook-form ?...React hooks for forms validation without the hassle (Web + React Native) https://github.com/react-hook-form.../react-hook-form React Hook Form 是高性能、灵活、易拓展、易于使用的表单校验库。...在底层,Nest 使用了 Express,但也提供了与其他各种库的兼容,例如 Fastify,可以方便地使用各种可用的第三方插件。
我们将学习如何在客户端和服务器上获取数据,对于 HTTP 客户端,我们将使用 Axios,并使用 React Query 库来处理获取到的数据,它允许我们在 React 应用程序中处理 API 请求和响应...React Query React Query 是一个很好的处理异步数据的库,可以将数据在 React 组件中使用。...React Query 的另一个好处是它的缓存机制。对于每个查询,我们需要提供相应的查询键,用于将数据存储在缓存中。 这也有助于请求的去重。...对于请求定义函数,我们将使用我们刚刚创建的 axios client,对于 hooks,我们将使用 React Query 的 hooks。..."; import { useForm } from "react-hook-form"; import { Button } from "@/components/button"; import {
猫头虎 分享:如何在服务器中Ping特定的端口号? 网络调试的实用技巧,学会这些工具,你将成为运维与开发中的“Ping”王!...在日常开发和运维中,我们经常需要检查目标主机上的某个端口是否开启,并确定网络连通性。...install telnet # macOS 用法示例: 测试目标主机是否开放指定端口(以 example.com:80 为例): telnet example.com 80 成功连接: 终端显示空白或...连接失败: 显示 Unable to connect to remote host。 温馨提示: 如果连接成功但无响应,说明目标端口开放但无服务运行。...-v:显示详细信息。 运行结果: 成功:Connection to example.com port 80 [tcp/http] succeeded!
在本教程中,您将学习如何使用 React-Email、Next.js 和 Resend 从经过验证的域发送电子邮件。先决条件以下是您在本教程中需要遵循的内容:Node.js 安装在您的计算机上。...client';import { useForm } from 'react-hook-form';import { toast } from 'react-hot-toast'; // updated...toast从库导入react-hot-toast,在成功发送电子邮件后显示通知。定义一个名为 的异步函数onSubmit来在用户提交表单时处理表单提交。...实施动态电子邮件模板使用 React Email,创建现代电子邮件模板变得非常容易。...该Head组件用于在电子邮件部分中包含元信息。该Preview组件用于定义电子邮件客户端预览窗格中显示的文本。