로직을 짜기 전에 먼저 구글링을 해봤을 때는 딱히 나오는 것이 없었고,
혼자 생각해본 로직으로는 이메일 중복확인 버튼 onClick 속성에 카운트를 걸어서 useState로 카운트를 업데이트 시킨 다음
그 카운트가 1 이상일 경우 회원가입 버튼이 가능하도록 하면 어떨까 생각했었는데,
그거 하나 하자고 state함수를 늘리기에는 효율적이지 않은 것 같아 주변분들께 물어본 결과
일단 state 함수를 하나 추가하긴 해야 한다.
초기값을 false로 놓은 다음 그 값을 회원가입 버튼 if문 전체에 걸어버린다.
그러면 일단 회원가입 버튼은 활성화되지 않고,
이메일 중복확인 함수에 fetch 함수를 실행시킨 다음, set함수로 이메일 중복 여부에 따라서 true 혹은 false로 업데이트 시키는 방법이었다.
이 경우 state는 필수적이라 비효율적이지는 않을 것이라고 이야기도 덧붙여 주셨다.
const [isCheckEmailFirst, setIsCheckEmailFirst] = useState(false);
// state함수를 하나 추가해준 다음, 초기값을 false로 설정한다.
const goToSignUp = e => {
e.preventDefault();
if (isCheckEmailFirst) {
// 그리고 회원가입 버튼 로직 전체를 isCheckEmailFirst 조건을 걸어 false일 경우 실행시키지 않는다.
if (isSignUpCheck) {
fetch('', {
...
} else {
alert('이메일 중복체크를 먼저 해 주세요');
// 이메일 중복 버튼 선행을 위한 alert창 띄우기
}
};
// 그 다음 이메일 중복확인 버튼에서
const checkEmailValid = e => {
e.preventDefault();
fetch('', {
...
if (result.message === 'SUCCESS') {
alert('사용 가능한 이메일입니다.');
setIsCheckEmailFirst(true);
// 사용 가능한 이메일이라면 set함수를 통해 isCheckEmailFirst를 true로 업데이트 시키고
} else if (result.message === 'ALREADY_EXISTS_EMAIL') {
alert('이미 존재하는 이메일입니다. 다시 입력해 주세요.');
setIsCheckEmailFirst(false);
// 이미 존재하는 이메일이라면 false인 상태 그대로 냅둔다.
}
});
};