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

怎么增加网站的关键词库怎么做卖车网站

怎么增加网站的关键词库,怎么做卖车网站,西安企业管理咨询有限公司,烟台 网站建设多少钱简介 Formik 是为 React 开发的开源表单库,提供状态管理、验证和提交处理功能,可简化复杂表单的开发。 核心优势 ‌- 状态管理 ‌:自动跟踪输入值、验证状态和提交进度,无需手动编写状态逻辑。 ‌ ‌- 验证功能 ‌:…

简介

Formik 是为 React 开发的开源表单库,提供状态管理、验证和提交处理功能,可简化复杂表单的开发。

核心优势

‌- 状态管理 ‌:自动跟踪输入值、验证状态和提交进度,无需手动编写状态逻辑。 ‌
‌- 验证功能 ‌:支持声明式验证规则(如字段类型、长度限制、异步验证),实时反馈错误信息。 ‌
‌- 集成能力 ‌:可与 Yup (验证)、 React Hook Form (表单钩子)等库组合使用,扩展功能。

安装

npm install formik

示例

基本用法

import { useFormik } from "formik";export default function Formik() {const formik = useFormik({initialValues: {username: "",email: "",},validate: (values) => {const errors = {};if (!values.username) {errors.username = "用户名是必填项";} else if (values.username.length < 2) {errors.username = "用户名至少2个字符";}if (!values.email) {errors.email = "邮箱是必填项";} else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)) {errors.email = "无效的邮箱地址";}return errors;},onSubmit: (values) => {console.log(values);alert(JSON.stringify(values, null, 2));},});return (<formonSubmit={formik.handleSubmit}className="max-w-sm mx-auto mt-10 p-6 border rounded shadow"><div className="mb-4"><label htmlFor="username" className="block mb-1 font-bold">用户名</label><inputid="username"name="username"type="text"onChange={formik.handleChange}onBlur={formik.handleBlur}value={formik.values.username}className="w-full px-3 py-2 border rounded"/>{formik.touched.username && formik.errors.username ? (<div className="text-red-500 text-sm mt-1">{formik.errors.username}</div>) : null}</div><div className="mb-4"><label htmlFor="email" className="block mb-1 font-bold">邮箱</label><inputid="email"name="email"type="email"onChange={formik.handleChange}onBlur={formik.handleBlur}value={formik.values.email}className="w-full px-3 py-2 border rounded"/>{formik.touched.email && formik.errors.email ? (<div className="text-red-500 text-sm mt-1">{formik.errors.email}</div>) : null}</div><buttontype="submit"className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">提交</button></form>);
}

集成 yup

import { useFormik } from "formik";
import * as Yup from "yup";export default function Formik() {const formik = useFormik({initialValues: {username: "",email: "",},validationSchema: Yup.object({username: Yup.string().min(2, "用户名至少2个字符").required("用户名是必填项"),email: Yup.string().email("无效的邮箱地址").required("邮箱是必填项"),}),onSubmit: (values) => {alert(JSON.stringify(values, null, 2));},});return (<formonSubmit={formik.handleSubmit}className="max-w-sm mx-auto mt-10 p-6 border rounded shadow"><div className="mb-4"><label htmlFor="username" className="block mb-1 font-bold">用户名</label><inputid="username"name="username"type="text"onChange={formik.handleChange}onBlur={formik.handleBlur}value={formik.values.username}className="w-full px-3 py-2 border rounded"/>{formik.touched.username && formik.errors.username ? (<div className="text-red-500 text-sm mt-1">{formik.errors.username}</div>) : null}</div><div className="mb-4"><label htmlFor="email" className="block mb-1 font-bold">邮箱</label><inputid="email"name="email"type="email"onChange={formik.handleChange}onBlur={formik.handleBlur}value={formik.values.email}className="w-full px-3 py-2 border rounded"/>{formik.touched.email && formik.errors.email ? (<div className="text-red-500 text-sm mt-1">{formik.errors.email}</div>) : null}</div><buttontype="submit"className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">提交</button></form>);
}

集成 react-hook-form

import { useForm } from "react-hook-form";export default function Formik() {const {register,handleSubmit,formState: { errors, touchedFields },} = useForm({mode: "onChange",defaultValues: {username: "",email: "",},});const onSubmit = (values) => {console.log(values);alert(JSON.stringify(values, null, 2));};return (<formonSubmit={handleSubmit(onSubmit)}className="max-w-sm mx-auto mt-10 p-6 border rounded shadow"><div className="mb-4"><label htmlFor="username" className="block mb-1 font-bold">用户名</label><inputid="username"{...register("username", {required: "用户名是必填项",minLength: { value: 2, message: "用户名至少2个字符" },})}className="w-full px-3 py-2 border rounded"/>{touchedFields.username && errors.username && (<div className="text-red-500 text-sm mt-1">{errors.username.message}</div>)}</div><div className="mb-4"><label htmlFor="email" className="block mb-1 font-bold">邮箱</label><inputid="email"type="email"{...register("email", {required: "邮箱是必填项",pattern: {value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,message: "无效的邮箱地址",},})}className="w-full px-3 py-2 border rounded"/>{touchedFields.email && errors.email && (<div className="text-red-500 text-sm mt-1">{errors.email.message}</div>)}</div><buttontype="submit"className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">提交</button></form>);
}

formik validate、yup、react-hook-form 集成对比

1. Formik 自带 validate

  • 写法:在 useFormik 里传入 validate 函数,手动校验每个字段,返回错误对象。
  • 优点
  • 灵活,适合简单或自定义复杂逻辑。
  • 不依赖第三方库。
  • 缺点
  • 代码冗长,重复性高。
  • 维护性较差,规则多时易出错。
  • 示例
  validate: (values) => {const errors = {};if (!values.username) {errors.username = "用户名是必填项";} else if (values.username.length < 2) {errors.username = "用户名至少2个字符";}// ... 其他校验return errors;};

2. Formik 集成 Yup

  • 写法:传入 validationSchema,使用 Yup 对象声明式定义规则。
  • 优点
  • 规则声明式,简洁易读。
  • 支持复杂嵌套、异步校验、类型校验等。
  • 维护性好,易扩展。
  • 缺点
  • 需额外安装 Yup。
  • 某些极端自定义逻辑需配合 validate。
  • 示例
  validationSchema: Yup.object({username: Yup.string().min(2, "用户名至少2个字符").required("用户名是必填项"),email: Yup.string().email("无效的邮箱地址").required("邮箱是必填项"),});

3. React Hook Form

  • 写法:通过 register 注册字段时直接传入校验规则,也可结合 Yup。
  • 优点
  • 语法简洁,性能优异(按需渲染)。
  • 支持原生表单校验、异步校验。
  • 易与 Yup 等 schema 库集成。
  • 缺点
  • 语法与 Formik 不同,迁移需适应。
  • 复杂表单时需结合第三方库。
  • 示例
  {...register("username", {required: "用户名是必填项",minLength: { value: 2, message: "用户名至少2个字符" },})}

总结对比表

特性Formik validateFormik + YupReact Hook Form
书写方式手写函数声明式 schema注册时传规则
依赖Yup无/可选 Yup
代码量
维护性一般
灵活性
性能一般一般
适合场景简单/自定义复杂逻辑规则多/复杂表单性能敏感/大表单

结论

  • 简单表单可用 Formik 的 validate,复杂表单推荐 Yup 或 React Hook Form。
  • 追求声明式、可维护性优先用 Yup。
  • 性能和体验优先可选 React Hook Form。

 React 强大的表单验证库formik之集成Yup、React Hook Form库 - 高质量源码分享平台-免费下载各类网站源码与模板及前沿动态资讯


文章转载自:

http://YPjmBDpZ.brnwc.cn
http://LP6VTJvD.brnwc.cn
http://7SoCZ5ol.brnwc.cn
http://gQOCZrvP.brnwc.cn
http://G5loQ4WP.brnwc.cn
http://LxUyUx8P.brnwc.cn
http://XdVznh8l.brnwc.cn
http://NXcPdhfT.brnwc.cn
http://wuNY8c1o.brnwc.cn
http://BXppgTY0.brnwc.cn
http://vyST79Mu.brnwc.cn
http://Luz8xgFc.brnwc.cn
http://dejhl2ZB.brnwc.cn
http://E1FpSQnO.brnwc.cn
http://jsQIjZaS.brnwc.cn
http://Jl1rfjZN.brnwc.cn
http://tPJLXEPp.brnwc.cn
http://SPa7XdZ9.brnwc.cn
http://V0IHNXUF.brnwc.cn
http://dbcqYdiQ.brnwc.cn
http://ZwImmuJ5.brnwc.cn
http://TLvJNrI2.brnwc.cn
http://HgSdxHds.brnwc.cn
http://aeAlP5hs.brnwc.cn
http://DPEpXQkM.brnwc.cn
http://yGnA9qFL.brnwc.cn
http://G09mSXwJ.brnwc.cn
http://QY6YcZ5W.brnwc.cn
http://zpjFFXma.brnwc.cn
http://xPQYwztr.brnwc.cn
http://www.dtcms.com/wzjs/657575.html

相关文章:

  • 网站添加什么东西才能和用户体验国产免费erp软件
  • 做电影网站违法么wordpress 随机显示文章
  • 做微信封面的网站网站服务器崩溃一般多久可以恢复
  • 网络公司给我们做的网站_但是我们不知道域名是否属于我们做网络推广费用
  • seo网站建站wordpress增加用户
  • 苏州优化网站公司泰安创意网络公司
  • 外贸网站开发开发廊坊百度快照优化排名
  • 网站空间密码施工企业财务管理制度及报销流程
  • 南宁公司网站建设公司深圳宝安网站建设工
  • 高清免费爱做网站旅游网站规划设计方案
  • 网站备案网站名称怎么填短视频营销的特点
  • 织梦html网站地图唐山企业网站建设公司
  • 体育用品东莞网站建设wordpress情侣模板
  • 国内org域名的网站雅安工程交易建设网站
  • 太原谁想做网站电商网站维护费用
  • 交通建设网站seo点击软件
  • 有哪些静态网站faq页面设计模板
  • 如何建设学校网站wordpress主题 淘客
  • 企业网站开发背景及意义wordpress创建多个分类目录
  • 凡科网做网站贵吗盱眙在仕德伟做网站的有几家
  • wordpress模板网站标题重复吴江住房和城乡建设局官方网站
  • 仿照别人的网站做违法吗电商详情页素材
  • 智能建站实验报告主机屋网站搭建设置
  • 全球搜索网站排名wordpress 下载的还是旧文件
  • 网站维护需要学什么网站正在建设中提示页
  • 有口碑的番禺网站建设沈阳网站建设专业公司
  • 网站开发人员属于数字营销网
  • 做企业网站怎么备案WordPress图片直链插件
  • 长沙优化网站推广织梦 网站地图
  • 可以做免费广告的网站国内做网站的大公司有哪些