import { useState, useEffect } from 'react'; import { Redirect, useParams } from 'react-router-dom'; import { useAuth } from '../../utils/context'; import BtnGroup from "../Buttons/BtnGroup"; import subjectApi from '../../apis/subject.api'; import catchErrors from '../../utils/catchErrors'; import styles from "./form.module.scss"; const SubjectForm = () => { const { user } = useAuth(); const { subjectId } = useParams(); const [success, setSuccess] = useState(false); const [error, setError] = useState(""); const [disabled, setDisabled] = useState(true); const [subject, setSubject] = useState({ lectureName: "", prof: "", classRoom: "" }); useEffect(() => { if (subjectId) getInfo(subjectId); }, []) useEffect(() => { let isMounted = true; const checkInfo = { lectureName: subject.lectureName } if (isMounted) { const isSubject = Object.values(checkInfo).every((el) => Boolean(el)); isSubject ? setDisabled(false) : setDisabled(true); } return () => { isMounted = false; } }, [subject]) function handleChange(e) { const { name, value } = e.target setSubject({ ...subject, [name]: value }) } async function getInfo(subjectId) { try { setError("") const result = await subjectApi.getSubInfo(user.id, subjectId) setSubject({ ...subject, ...result }) } catch (error) { catchErrors(error, setError) } } async function handleSubmit(e) { e.preventDefault(); try { setError("") if (subjectId) { //수정함수 실행 await subjectApi.editSubject(subject, user.id, subjectId) alert("해당 과목 정보가 성공적으로 수정되었습니다.") } else { //등록함수 실행 await subjectApi.addSubject(subject, user.id) alert("해당 과목 정보가 성공적으로 등록되었습니다.") } setSuccess(true) } catch (error) { catchErrors(error, setError) setSubject({ lectureName: "", prof: "", classRoom: "" }) } } if (success) { return } return (
) } export default SubjectForm;