처음에는 삼항연산자를 이용하여 isLogin 상태이면 room으로 이동하게 Link를 사용해보았다
<div>
{isLogin ? <Link to="/room" /> : <></>}
</div>
그런데 작동하지 않아 useNavigate
를 사용해보았다
const navigate = useNavigate()
const signIn = () => {
// signUpAPI 실행
signInAPI(userid, password)
.then((response) => {
if (response !== '') {
setToken(response);
setUserid('');
setPassword('');
navigate('/room');
}
else {
alert('로그인 실패!!!');
setUserid('');
setPassword('');
}
})
}
<button onClick={signIn}>로그인</button>
💡 response 값이 존재한다면
/room
으로 이동
⚠️
response !== NULL
이 아닌response !== ''
이다
''
-> 존재하지 않는다
NULL
-> 값이 널이다
function SignInPage({token, setToken}) {
const [userid, setUserid] = useState('');
const [password, setPassword] = useState('');
const navigate = useNavigate()
const useridHandler = (e) => {
setUserid(e.target.value);
};
const passwordHandler = (e) => {
setPassword(e.target.value);
};
// 로그인 버튼 클릭
const signIn = () => {
// signUpAPI 실행
signInAPI(userid, password)
.then((response) => {
if (response !== '') {
setToken(response);
setUserid('');
setPassword('');
navigate('/room');
}
else {
alert('로그인 실패!!!');
setUserid('');
setPassword('');
}
})
}
//로그인 상태 관리
const [isLogin, setIsLogin] = useState(false);
useEffect(() => {
if(token === ''){
console.log('로그인 후 사용가능합니다.');
}
else{
setIsLogin(true);
console.log('로그인 상태');
}
}, [token]);
return (
<div className="PageContainer">
<h1>SignInPage입니다.</h1>
<div>
<input
name="userid"
type="text"
placeholder="userid"
value={userid}
onChange={useridHandler}
/>
</div>
<div>
<input
name="password"
type="password"
placeholder="password"
value={password}
onChange={passwordHandler}
/>
</div>
<div>
<button className="signInButton" onClick={signIn}>
로그인
</button>
</div>
</div>
);
}
export default SignInPage;