diff --git a/feature/Experience/ExperienceForm.tsx b/feature/Experience/ExperienceForm.tsx index 55d057e..f2e12d7 100644 --- a/feature/Experience/ExperienceForm.tsx +++ b/feature/Experience/ExperienceForm.tsx @@ -1,15 +1,12 @@ "use client"; +import { useForm } from "react-hook-form"; import { Button } from "@/components/button/Button"; -import { Input } from "@/components/input/Input"; -import type { ExperienceFormValues } from "@/types/ExperienceForm.types"; - -import { useExperienceForm } from "@/hooks/useExperienceForm"; +import { ImageSection } from "./ImageSection"; +import { ScheduleSection } from "./ScheduleSection"; import { useScheduleManager } from "@/hooks/useScheduleManager"; import { useImageManager } from "@/hooks/useImageManager"; - -import { ImageSection } from "./ImageSection"; -import { ScheduleSection } from "./ScheduleSection"; +import type { ExperienceFormValues } from "@/types/ExperienceForm.types"; interface Props { initialValues?: Partial; @@ -22,21 +19,28 @@ export default function ExperienceForm({ onSubmit, submitLabel = "등록하기", }: Props) { - /** 기본 폼 상태 */ - const { values, handleChange } = useExperienceForm(initialValues); - - /** 스케줄 관리 */ - const scheduleManager = useScheduleManager( - initialValues?.schedules ?? [] - ); + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ + defaultValues: { + title: initialValues?.title ?? "", + category: initialValues?.category ?? "", + description: initialValues?.description ?? "", + price: initialValues?.price ?? 0, + address: initialValues?.address ?? "", + }, + }); + + const scheduleManager = useScheduleManager(initialValues?.schedules ?? []); - /** 이미지 관리 */ const bannerImages = useImageManager(); const detailImages = useImageManager(); - const handleSubmit = () => { + const onValidSubmit = (data: ExperienceFormValues) => { onSubmit({ - ...values, + ...data, schedules: scheduleManager.schedules, bannerImageUrl: bannerImages.images[0]?.preview ?? "", subImageUrls: detailImages.images.map((img) => img.preview), @@ -46,58 +50,52 @@ export default function ExperienceForm({ return (
{ - e.preventDefault(); - handleSubmit(); - }} + onSubmit={handleSubmit(onValidSubmit)} >

내 체험 등록

{/* 제목 */} - + {errors.title && ( +

{errors.title.message}

+ )} {/* 카테고리 */} - {/* 설명 */}