"use client"; import Image from "next/image"; import Link from "next/link"; import { SubmitHandler, useForm } from "react-hook-form"; import InputText from "@components/common/form/Input"; import { useCustomToast } from "@/utils/hooks/useToast"; import { useRouter } from "next/navigation"; import { EMAIL_REGEX, SIGNUP_IMG, IS_VALID_INPUT } from "@utils/constants"; import { createUser } from "@utils/actions"; import { Button } from "@components/common/button/Button"; export type RegisterInputs = { firstName: string; lastName: string; email: string; password: string; passwordConfirmation: string; }; export default function RegistrationForm() { const router = useRouter(); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ mode: "onSubmit", reValidateMode: "onChange", }); const { showToast } = useCustomToast(); /** * * 浏览器端 RegistrationForm.onSubmit → 调用 createUser(data) ← 这是一个 Server Action → 发送 POST 请求到当前页面路由(或者由框架生成的端点) → 服务端执行 createUser 函数(访问 cookies、session、数据库等) → 返回结果给浏览器 */ const onSubmit: SubmitHandler = async (data) => { console.log('register run where?--------'); if (data.password !== data.passwordConfirmation) { showToast("The Passwords do not match.", "warning"); return; } await createUser(data) .then((res) => { if (res?.success) { showToast("User created successfully", "success"); router.replace("/customer/login"); } else { showToast(res?.error?.message || "Failed to create user", "warning"); } }) .catch((error) => { showToast(error.message || "An error occurred", "warning"); }); }; return (

Become User

You are new to our store, we are glad to have you as a member.

{ if (!/[A-Z]/.test(val)) return "Must contain at least one uppercase letter"; if (!/[a-z]/.test(val)) return "Must contain at least one lowercase letter"; if (!/[0-9]/.test(val)) return "Must contain at least one number"; if (/\s/.test(val)) return "Cannot contain spaces"; return true; }, })} label="Password" labelPlacement="outside" name="password" placeholder="Enter password" typeName="password" size="lg" errorMsg={ errors.password?.message ? [errors.password.message] : undefined } />
Sign Up Image
); }