import styles from "./signup.module.scss"; import { useState } from 'react'; const Signup = () => { const [userText, setUserText] = useState({ userId: '', userName: '', userBirthday: '', userMbnum: '', userPassword: '', userRePassword: '' }) //각 타입별 error 유무 state const [errors, setErrors] = useState({ errorId: null, errorName: false, errorBirthday: false, errorMbnum: false, errorPassword: false, errorRePassword: false }) // id중복확인 여부 state와 가입하기 누르면 id 임시 저장 const [overlapId, setOverlapId] = useState(false); const [preId, setPreId] = useState(""); //입력할때마다 state에 저장 const handleUserOnChange = (e) => { setUserText({ ...userText, [e.target.name]: e.target.value }) } //id(중복확인 체크, 형식 에러) const handleOnClickId = (e) => { if (userText.userId.length < 5) { e.preventDefault(); // e.stopPropagati//on(); setErrors(errors => ({ ...errors, [e.target.name]: true })); if (overlapId === true) { setOverlapId(false); }; } else { e.preventDefault(); e.stopPropagation(); setErrors(errors => ({ ...errors, [e.target.name]: false })); setOverlapId(true); } } //유효성 검사 함수 const vaildationData = (text, compareValue, error) =>{ if (text !== compareValue) { setErrors(errors => ({ ...errors, [error]: true })) } else{ setErrors(errors => ({ ...errors, [error]: false })) } } //가입하기와 동시에 유효성 검사 const handleonSubmit = (e) => { e.preventDefault(); setPreId(()=> (userText.userId)); console.log(preId); //아이디 유효성 검사 if ((userText.userId.length < 5)) { setErrors(errors => ({ ...errors, errorId: true })); } else if((userText.userId.length >= 5) && (overlapId === true)){ if(preId !== userText.userId){ console.log(preId); setOverlapId(()=> (false)); } } else if(userText.userId >= 5){ setErrors(errors => ({ ...errors, errorId: false })); } console.log(preId); //별명 에러유무 검사 vaildationData((userText.userName.length === 0), false, "errorName"); // 생일 에러유무 검사 vaildationData(userText.userBirthday.length, 6, "errorBirthday"); // 휴대폰 에러유무 검사 vaildationData(userText.userMbnum.length, 11, "errorMbnum"); // 비밀번호 에러유무 검사 vaildationData(userText.userPassword.length, 8, "errorPassword"); // 비밀번호 확인 에러유무 검사 vaildationData(userText.userRePassword, userText.userPassword, "errorRePassword"); const errorArray = Object.values(errors); // 최종 유효성 검사 if (overlapId && (errorArray.some((element) => (element)) === false)) { console.log(userText); setTimeout(()=>{console.log("회원가입을 완료했습니다.")},2000) } } return ( // 데이터 입력과 유효성 검사 후 보이는 경고창
{console.log("userText==", userText, errors, overlapId)}
회원가입
{(overlapId === false) && errors.errorId &&

5~10자리 사이로 입력해주세요.

} {overlapId && (errors.errorId === false) &&

아이디 중복이 확인되었습니다.

} {(errors.errorId === false) && (overlapId === false) &&

아이디 중복확인을 해주세요.

}
{errors.errorName &&

10자 이내로 입력해주세요.

}
{errors.errorBirthday &&

숫자 6자리를 입력해주세요.

}
{errors.errorMbnum &&

-없이 숫자 11자리를 입력해주세요.

}
{errors.errorPassword &&

8자리를 입력해주세요.

}
{errors.errorRePassword &&

비밀번호가 일치하지 않습니다.

}
가입하기
{/* 아이디 중복 확인 모달창 */}
) } export default Signup