본문 바로가기
카테고리 없음

로그아웃 후 useState 변경되는 문제

by ohojee 2024. 3. 17.

원래 코드는 아래와 같다. 하지만 이렇게 하니까 로그아웃 후, 로그인 페이지에서 자물쇠를 누르면 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만 위의 코드로 변경했더니 해결!

댓글