인프런 커뮤니티 질문&답변

ea님의 프로필 이미지

작성한 질문수

Next + React Query로 SNS 서비스 만들기

로그아웃 & 로그인 여부에 따라 화면 다르게 하기

로그인 시 홈페이지의 로그아웃 버튼이 새로고침 시에 보이는 문제

해결된 질문

24.02.16 02:02 작성

·

432

·

수정됨

0

로그아웃&로그인 여부에 따라 화면 다르게 하기 강의까지 듣고 프로젝트에 적용 중입니다.

로그인을 하고 홈페이지로 이동하는데, me data 에 null 값이 들어와서 로그아웃 버튼이 보이지 않습니다.

그런데 새로고침을 하면 다시 원하는 화면이 그려지더라구요. 아래에 비슷한 질문이 있어서 확인해봤는데 해결이 안됐습니다.

Screenshot 2024-02-16 at 2.03.21 AM.pngScreenshot 2024-02-16 at 2.03.37 AM.png

//LogoutButton.tsx

'use client'

import { signOut, useSession } from 'next-auth/react'
import { useRouter } from 'next/navigation'

export default function LogoutButton() {
  const router = useRouter()
  const { data: me } = useSession()

  const onLogout = () => {
    signOut({ redirect: false }).then(() => {
      router.replace('/')
    })
  }

  // 내 정보 없으면 로그아웃 버튼 안 보여주기
  if (!me?.user) {
    return null
  }

  return (
    <button onClick={onLogout}>
      <div>
        <div>🔙로그아웃🔙</div>
        <img src={me.user?.image!} alt={me.user?.email as string} />
      </div>
      <div>
        <div>{me.user?.name}</div>
        <div>@{me.user?.email}</div>
      </div>
    </button>
  )
}

답변 2

0

ea님의 프로필 이미지
ea
질문자

2024. 02. 16. 02:42

해결했습니다! 감사합니다! 코드가 처리되는 순서 때문에 생긴 문제여서 말씀해주신 것 처럼 프롭으로 넘겨줘야 했던게 맞을까요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 02. 16. 13:15

세션 자체를 서버사이드렌더링하려면 auth()로 하는 수밖에 없습니다.

ea님의 프로필 이미지
ea
질문자

2024. 02. 16. 14:21

감사합니다!

 

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2024. 02. 16. 02:06

ea님의 프로필 이미지

작성한 질문수

질문하기