import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import i18next from "i18next";
import { z } from "zod";
import { zodI18nMap } from "zod-i18n-map";
import translation from "zod-i18n-map/locales/zh-CN/zod.json";
import "../tailwind.css";
i18next.init({
lng: "zh",
resources: {
zh: { zod: translation },
},
});
z.setErrorMap(zodI18nMap);
const schema = z.object({
name: z.string().min(1),
age: z.number().min(10),
});
export const Register = () => {
const {
register,
handleSubmit,
formState: { errors },
} = useForm({
resolver: zodResolver(schema),
});
return (
<form onSubmit={handleSubmit((d) => console.log(d))} noValidate>
<div className="block">
<input
{...register("name")}
className={errors.name?.message ? "invalid" : "valid"}
placeholder="name"
required
/>
{errors.name?.message && (
<p className="error">{errors.name?.message.toString()}</p>
)}
</div>
<div>
<input
type="number"
{...register("age", { valueAsNumber: true })}
className={errors.age?.message ? "invalid" : "valid"}
placeholder="age"
required
/>
{errors.name?.message && <p className="error">{errors.age?.message.toString()}</p>}
</div>
<input type="submit" />
</form>
);
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话