- ex) ID -
@포함 / PW - 5글자 이상- 삼항 연산자 적용해서 조건에 따라 버튼 색상에 변화를 주시기 바랍니다.
이전
Clone Coding Project에서와 마찬가지로 로그인하는ID와Password의 값에 따라 버튼의 활성화 조건을 구현하는 단계이다. 차이점이라면React로 구현한다는 것이고, 그만의 새로운 문법을 사용한다는 것이었다.
import React from 'react';
import { Link } from 'react-router-dom';
import './Login.scss';
import { useNavigate } from 'react-router-dom';
import { useState } from 'react';
function Login() {
const navigate = useNavigate(); // 페이지 이동을 위한 useNavigate()
const goToList = () => {
navigate("/list");
};
const [saveID, saveIDchange] = useState(''); // ID 입력을 위한 State
const [savePW, savePWchange] = useState(''); // PW 입력을 위한 State
return (
<section>
<h1>WeBucks</h1>
<div className="input">
<input type="text" placeholder="전화번호, 사용자 이름 또는 이메일" class="userid"
onChange={(e) => saveIDchange(e.target.value)} />
</div>
<div className="input">
<input type="password" placeholder="비밀번호" className="pw"
onChange={(e) => savePWchange(e.target.value)} />
<button className="hide">show&hide</button>
</div>
<div className="btn">
<button className="but" disabled={
saveID.includes('@') && savePW.length >= 5 ?
false : true
} // 위와 같이 버튼의 disabled 속성에 삼항연산자 조건을 걸어주고, 이에 따른 disabled 속성을 반환해주면 원하는 기능을 구현할 수 있다.
onClick={goToList}>로그인</button>
</div>
<div className="forget">
<Link to='Detail'>비밀번호를 잊으셨나요?</Link>
</div>
</section>
);
}
export default Login
.btn {
display: flex;
justify-content: center;
margin-top: 20px;
.but {
height: 45px;
width: 32%;
border-radius: 10px;
border: none;
color: white;
background-color: #add3eb;
font-size: 17px;
.but:enabled {
background-color: blue;
cursor: pointer;
}
}
}
🐳 느낀 점
React의JSX문법 내에서는if문의 사용이 불가하다. 대신삼항연산자를 활용하여 조건문을 구현할 수 있다는 것을 배웠으며, 따로함수나컴포넌트를 통해if문을 사용하기 번거로울 때 이런식으로 사용하면 좋을것 같다고 생각했다.