정의왕

Register ver1.0

1 -import React, { useState } from "react"; 1 +import React, {useCallback, useState} from "react";
2 import "../style/RegisterPage.scss"; 2 import "../style/RegisterPage.scss";
3 -import { Icon, Input } from "semantic-ui-react" 3 +import { Button, Icon, Input } from "semantic-ui-react"
4 4
5 function RegisterPage() { 5 function RegisterPage() {
6 const [Email, setEmail] = useState(""); 6 const [Email, setEmail] = useState("");
7 const [Password, setPassword] = useState(""); 7 const [Password, setPassword] = useState("");
8 + const [PasswordCheck,setPasswordCheck] = useState("");
9 + const [Personality, setPersonality] = useState("");
10 + const [PasswordError,setPasswordError] = useState(false);
8 11
9 const onIdHandler = (event) => { 12 const onIdHandler = (event) => {
10 setEmail(event.currentTarget.value); 13 setEmail(event.currentTarget.value);
...@@ -12,11 +15,22 @@ function RegisterPage() { ...@@ -12,11 +15,22 @@ function RegisterPage() {
12 const onPasswordHandler = (event) => { 15 const onPasswordHandler = (event) => {
13 setPassword(event.currentTarget.value); 16 setPassword(event.currentTarget.value);
14 }; 17 };
15 - const onSubmitHandler = (event) => { 18 + const onPersonalityHandler = (event) => {
19 + setPersonality(event.currentTarget.value);
20 + };
21 + const onPasswordChkHandler = useCallback((event) => {
22 + //비밀번호를 입력할때마다 password 를 검증하는 함수
23 + setPasswordError(event.currentTarget.value !== Password);
24 + setPasswordCheck(event.currentTarget.value);
25 + },[PasswordCheck]);
26 + const onSubmitHandler = useCallback((event) => {
16 event.preventDefault(); 27 event.preventDefault();
28 + if(Password !== PasswordCheck){
29 + return setPasswordError(true);
30 + }
17 console.log("Email",Email); 31 console.log("Email",Email);
18 console.log("Password", Password); 32 console.log("Password", Password);
19 - }; 33 + },[Password,PasswordCheck]);
20 return ( 34 return (
21 <div id="body"> 35 <div id="body">
22 <div className="register-form"> 36 <div className="register-form">
...@@ -30,7 +44,7 @@ function RegisterPage() { ...@@ -30,7 +44,7 @@ function RegisterPage() {
30 type="text" 44 type="text"
31 value={Email} 45 value={Email}
32 autoComplete="off" 46 autoComplete="off"
33 - onChange={onIdHandler}/> 47 + required onChange={onIdHandler}/>
34 </div> 48 </div>
35 <div className="input-area"> 49 <div className="input-area">
36 <Input 50 <Input
...@@ -41,9 +55,34 @@ function RegisterPage() { ...@@ -41,9 +55,34 @@ function RegisterPage() {
41 value={Password} 55 value={Password}
42 autoComplete="off" 56 autoComplete="off"
43 onChange={onPasswordHandler}/> 57 onChange={onPasswordHandler}/>
58 + {PasswordError && <div style={{color : 'red'}}>!</div>}
59 + </div>
60 + <div className="input-area">
61 + <Input
62 + icon={<Icon name='check'/>}
63 + iconPosition='left'
64 + placeholder="Check your Password"
65 + type="password"
66 + value={PasswordCheck}
67 + autoComplete="off"
68 + onChange={onPasswordChkHandler}/>
69 + </div>
70 + <div className="input-area">
71 + <Input
72 + icon={<Icon name='heart'/>}
73 + iconPosition='left'
74 + placeholder="Your MBTI"
75 + type="text"
76 + value={Personality}
77 + autoComplete="off"
78 + onChange={onPersonalityHandler}/>
44 </div> 79 </div>
45 - <div className="btn-area"> 80 + <div className="btn-area" >
46 - <button className="register-btn" >Register</button> 81 + <Button className='register-btn'
82 + content='Sign up'
83 + icon='signup'
84 + size='small'
85 + iconPosition='left'/>
47 </div> 86 </div>
48 </form> 87 </form>
49 </div> 88 </div>
......

54.8 KB | W: | H:

58.2 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 justify-content: center; 8 justify-content: center;
9 align-items: center; 9 align-items: center;
10 height: 100vh; 10 height: 100vh;
11 - background-image: url("../images/login_background.png"); 11 + background-image: linear-gradient( rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3) ), url("../images/register_background.png");
12 background-repeat: no-repeat; 12 background-repeat: no-repeat;
13 background-position: center; 13 background-position: center;
14 .register-form { 14 .register-form {
...@@ -62,8 +62,8 @@ ...@@ -62,8 +62,8 @@
62 margin-top: 30px; 62 margin-top: 30px;
63 63
64 .register-btn { 64 .register-btn {
65 - width: 150px; 65 + width: 170px;
66 - height: 50px; 66 + height: 55px;
67 background-color: transparent; 67 background-color: transparent;
68 font-size: 20px; 68 font-size: 20px;
69 color: white; 69 color: white;
......