텍스트 어드벤쳐 사이트 로그인페이지 제작 중 Form 내부에 Form 코드가 불가능함을 알았다.

     

    (수정 전 코드)

     

    function login() {
            axios({
                method: "POST",
                url: `http://localhost:3001/auth/login`,
                data: {
                    email: email,
                    password: pwd,
                },
            })
        }

        return(
            <body className="login-img">
                <main className="login-main">
                    <header className="login-header">
                        <a href="/">
                            <div>
                                <span className="font-hambak login__title">
                                    TEXT ADVENTURE
                                    <br />
                                    PROJECT
                                </span>
                            </div>
                        </a>
                        <div></div>
                    </header>

                    <form className="login-form" onSubmit={login}>
                   
                        <div className="grid-1 font-game-thick">로그인</div>
                        <div className="grid-2 ">
                            <input type="email" placeholder="계정 이메일" required onChange={onChangeEmail}/>
                            <input type="password" placeholder="비밀번호" required onChange={onChangePwd}/>
                            <form className='google-login-form' action="http://localhost:3001/auth/google" method="get">
                                <button className="google-login"> <img src={googleLogo} />구글 로그인</button>
                            </form>
                            <div className="autoLogin-container">
                                <input type="checkbox" id="autoLogin" name="autoLogin" />
                                <label className="font-game-thin" htmlFor="autoLogin">로그인 상태 유지</label>
                            </div>
                        </div>
                        <div className="grid-3">
                            <button className="login-enter-btn">
                                <img src={arrow} alt="" />
                            </button>
                        </div>
                        <div className="grid-4 font-game-thin">
                            <a href="">아이디/비밀번호 찾기</a>
                            <br />
                            <a href="/#/signup">회원가입</a>
                        </div>
                       
                    </form>

     

    구글 로그인 버튼을 누르면 바로 상위에 있는 form에서 submit이 발생하는 게 아닌, 최상위 form에서 submit이 동작하여 

    onSubmit 에 login함수가 실행됨을 확인하였다.

     

    (수정후)

     

    <form className="login-form" onSubmit={login}>
                   
                        <div className="grid-1 font-game-thick">로그인</div>
                        <div className="grid-2 ">
                            <input type="email" placeholder="계정 이메일" required onChange={onChangeEmail}/>
                            <input type="password" placeholder="비밀번호" required onChange={onChangePwd}/>
                            <div className='google-login-form'>
                                <div className="google-login" onClick={googleLogin}> <img src={googleLogo} />구글 로그인</div>
                            </div>
                            <div className="autoLogin-container">
                                <input type="checkbox" id="autoLogin" name="autoLogin" />
                                <label className="font-game-thin" htmlFor="autoLogin">로그인 상태 유지</label>
                            </div>
                        </div>

     

    (평가)

    어렵지 않은 수정이었다. 다만 form 안에 form을 사용할 수 없다는 걸 프론트를 코딩해본지 꽤나 오래되었는데 이제야 알게되어서 기록을 남기고 싶었다.

     

     

    (git 주소)

    https://github.com/One-room-developers/Twine_pull/blob/about_episode/src/routes/login/login-route.tsx

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기