import { useState, useEffect } from 'react'; import { useParams, Redirect } from 'react-router-dom'; import { useAuth } from "../../utils/context"; import BtnGroup from "../Buttons/BtnGroup"; import subjectApi from '../../apis/subject.api'; import planApi from '../../apis/plan.api'; import catchErrors from '../../utils/catchErrors'; import styles from "./form.module.scss"; const StudyPlanEditForm = () => { const { user } = useAuth(); const params = useParams(); const [disabled, setDisabled] = useState(true) const [error, setError] = useState(""); const [success, setSuccess] = useState(false) const [studyplan, setStudyplan] = useState({ studyplanTitle: "", endDate: "", memo: "", deadline: "", selected: "" }) const [subjectList, setList] = useState([]) useEffect(() => { let isMounted = true; const checkInfo = { studyplanTitle: studyplan.studyplanTitle, endDate: studyplan.endDate, selected: studyplan.selected } if (studyplan.deadline === "on") { checkInfo.endTime = studyplan.endTime } else { delete checkInfo.endTime } if (isMounted) { const isStudyPlan = Object.values(checkInfo).every((el) => Boolean(el)); isStudyPlan ? setDisabled(false) : setDisabled(true); } return () => { isMounted = false; } }, [studyplan]) useEffect(() => { getSubject(user.id) if (params.subjectId) setStudyplan({...studyplan, selected: params.subjectId }) else if (params.planId) getInfo(params.planId); }, []) async function getSubject(id) { try { setError("") const result = await subjectApi.subjectTitle(id) setList(result) } catch (error) { catchErrors(error, setError) } } async function getInfo(planId) { try { setError("") const result = await planApi.getDetail(planId) setStudyplan({ ...studyplan, ...result }) } catch (error) { catchErrors(error, setError) } } function handleChange(e) { const { name, value } = e.target if (name === "deadline") { studyplan.deadline !== "on" ? setStudyplan({ ...studyplan, [name]: value }) : setStudyplan({ ...studyplan, [name]: "off" }) } else { setStudyplan({ ...studyplan, [name]: value }) } } async function handleSubmit(e) { e.preventDefault(); try { setError("") if (params.subjectId) { //등록함수 실행 await planApi.submit(studyplan, params.subjectId) alert("해당 학업계획이 성공적으로 등록되었습니다.") } else { //수정함수 실행 await planApi.edit(studyplan, params.planId) alert("해당 학업계획이 성공적으로 수정되었습니다.") } setSuccess(true) } catch (error) { catchErrors(error, setError) setStudyplan({ studyplanTitle: "", endDate: "", deadline: "", memo: "", selected: "" }) } } if (success) { return } return (
{console.log("studyplan---",studyplan)}
) } export default StudyPlanEditForm