원래 코드는 아래와 같다. 하지만 이렇게 하니까 로그아웃 후, 로그인 페이지에서 자물쇠를 누르면 islogined 상태가 누를 때마다 바뀌는 문제가 있었다.
const handleLogout = async () => {
console.log("로그아웃 완")
await logoutquery();
setIsLogined(false)
queryClient.invalidateQueries(['check']);
navigate('/auth/login');
};
const handleLogin = async () => {
navigate('/auth/login')
setIsLogined(true)
queryClient.invalidateQueries(['check']);
}
그래서 아래의 코드로 수정했다.
이러면 로그인 되어있으면 로그아웃 쿼리를 수행하고, 로그인 페이지로 이동
로그아웃 되어있고 && 로그인 페이지에 있으면 useState를 변경하지 않는 로직이었다.
const handleLogout = async () => {
queryClient.invalidateQueries(['check']);
const somebodyIn = queryClient.getQueryData(['check']);
if (somebodyIn.is_logined === true) {
await logoutquery();
setIsLogined(false)
console.log("로그아웃 완")
navigate('/auth/login');
}
};
const handleLogin = async () => {
queryClient.invalidateQueries(['check']);
const somebodyIn = queryClient.getQueryData(['check']);
if (somebodyIn.is_logined === false && window.location.pathname !== '/auth/login') {
console.log('!!!!!!!!!!!handlelogin')
navigate('/auth/login')
setIsLogined(true)
}
}
하지만 이렇게 코드를 작성하니 새로운 오류가 생겼다.
[0] Error: Unable to find the session to touch
[0] at /Users/jooheekim/Desktop/polaris/back-end/src/node_modules/connect-mongo/build/main/lib/MongoStore.js:325:37
[0] at runMicrotasks (<anonymous>)
[0] at processTicksAndRejections (node:internal/process/task_queues:96:5)
그리고 로그아웃 버튼을 누르고 로그인 페이지로 이동하는 속도도 느리고, 이동할 때 자물쇠가 열린 표시였다.(원래는 닫혀있어야 맞다)
이건 로그아웃 시 생기는 문제라고 판단해서 handle login만 위의 코드로 변경했더니 해결!
댓글