Files
frontend/apps/cs/src/pages/users/ui/create-page.tsx
T

46 lines
1.2 KiB
TypeScript

"use client";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { useMutationWrapper, useAlertStore } from "@/shared/lib";
import { UserApi, userSaveSchema, type UserSaveData } from "@/entities/user";
import { UsersForm } from "./users-form";
function CreatePage() {
const router = useRouter();
const alert = useAlertStore((state) => state.setMessage);
const form = useForm<UserSaveData>({
resolver: zodResolver(userSaveSchema),
defaultValues: {
userId: "",
userName: "",
password: "",
pswdHnt: "",
laeSeCd: "",
ogdpSeCd: "",
expryYmd: "",
},
});
// 사용자 등록 mutation
const { mutateAsync: saveUser } = useMutationWrapper({
mutationFn: (data: UserSaveData) => UserApi.saveUser(data),
onSuccess: () => {
alert("회원이 등록되었습니다.", router.back);
},
});
return (
<div className="card card-border !mt-6">
<div className="card-header">
<h3 className="text-2xl font-medium text-label">회원 등록</h3>
</div>
<UsersForm form={form} handleSave={saveUser} />
</div>
);
}
export { CreatePage };