일단 이번주에 맡은 기능은 다 하였고, 중간발표를 위해서 머지 후에 배포를 준비하였다.
어떤 어려운 점이 있었고 ,그것을 해결하는 과정을 정리 할 필요가 있었다.
이메일, 닉네임 중복확인
const debounceEmail = _.debounce((e) => {
setUserInfo({ ...userInfo, email: e.target.value });
}, 500);
const debounceNick = _.debounce((e) => {
setUserInfo({ ...userInfo, nickname: e.target.value });
}, 500);
로그인한 사용자, 로그인 안한 사용자 구분
const isLogin = useSelector((state) => state.user.isLogin);
React.useEffect(() => {
dispatch(loginCheck());
if (isLogin) {
window.alert("로그인중입니다!메인화면으로 이동할게요. ");
history.push("/main");
}
}, [isLogin]);
//PublicRoute
import React from "react";
import { Route, Redirect } from "react-router-dom";
// 로그인 안했을때 접근 할 수 있는 컴포넌트
const PublickRoute = ({ component: Component, ...rest }) => {
// 로컬 스토리지 토큰 확인
const isToken = localStorage.getItem("USER_TOKEN") ? true : false;
return (
<Route
{...rest}
render={(props) =>
isToken ? <Redirect to="/main" /> : <Component {...props} />
}
/>
);
};
export default PublickRoute;
//PrivateRoute
import React from "react";
import { Route, Redirect } from "react-router-dom";
// 반드시 로그인을 해야만 접근 할 수 있는 컴포넌트
const PrivateRoute = ({ component: Component, ...rest }) => {
// 로컬 스토리지 토큰 확인
const isToken = localStorage.getItem("USER_TOKEN") ? true : false;
return (
<Route
{...rest}
render={(props) =>
isToken ? <Component {...props} /> : <Redirect to="/login" />
}
/>
);
};
export default PrivateRoute;
</PrivateRoute>
</Switch>
<Redirect from="*" to="/" />
걱정은 절대로 내일의 슬픔을 빼앗지 않으며 단지 오늘의 기쁨만을 약화시킬 뿐이다.