import styles from "./my-info.module.scss"; import { useAuth } from "../../context/auth_context"; import { useState, useEffect } from "react"; import authApi from "../../apis/auth.api"; import catchErrors from "../../utils/catchErrors.js"; const MyInfo = () => { const { user } = useAuth(); const [userNickName, setUserNickName] = useState(user.nickName); const getNickName = async (id) => { console.log(id); const nickname = await authApi.getNickName(id); console.log(nickname); setUserNickName(nickname); } const [userRe, setUserRe] = useState({ userEmail: "", userNickName: "", userMbnum: "", userPassword: "", userRePassword: "" }) const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); //각 타입별 error 유무 state const [error, setError] = useState(""); const [errorMsg, setErrorMsg] = useState({ errorEmail: false, errorNickName: false, errorMbnum: false, errorPassword: false, errorRePassword: false }) useEffect(() => { getNickName(user.id); }, []) //입력할때마다 state에 저장 const handleUserOnChange = (e) => { setUserRe({ ...userRe, [e.target.name]: e.target.value }) if (e.target.name === "userMbnum") { setUserRe({ ...userRe, [e.target.name]: String(e.target.value) }) } } //비교하여 error메세지 반환 const vaildationData = (text, compareValue, error) => { if (text !== compareValue) { setErrorMsg(errorMsg => ({ ...errorMsg, [error]: true })); } else { setErrorMsg(errorMsg => ({ ...errorMsg, [error]: false })); } } const vaildationIdPw = (text, minValue, error) => { if ((text < minValue)) { setErrorMsg(errorMsg => ({ ...errorMsg, [error]: true })); } else { setErrorMsg(errorMsg => ({ ...errorMsg, [error]: false })); } } //유효성 검사 const validation = () => { //별명 유효성 검사 vaildationData((userRe.userNickName.length === 0), false, "errorNickName"); // 휴대폰 유효성 검사 vaildationData(userRe.userMbnum.length, 11, "errorMbnum"); // 비밀번호 유효성 검사 vaildationIdPw(userRe.userPassword.length, 8, "errorPassword"); // 비밀번호 확인 유효성 검사 vaildationIdPw(userRe.userPassword.length, 8, "errorRePassword"); // 최종 유효성 검사 if ((Object.values(errorMsg).some((element) => (element)) === false)) { } else { throw new Error("유효하지 않은 데이터입니다."); } } if (success) { alert("회원정보 수정이 완료되었습니다.") } const handleOnSummit = async (e) => { e.preventDefault(); try { setError(() => ("")); //처리가 될때까지 버튼(가입하기)이 안눌리게 지정 setLoading(() => (true)); //유효성 검사 validation(); const userData = userRe; console.log(userData); //서버로 전송 await authApi.modifyUser(userData); alert("회원정보 수정 완료"); setSuccess(true); } catch (error) { //에러전송 catchErrors(error, setError); } finally { setLoading(false); } } return (<>