🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

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

24.02.16 02:02 작성 24.02.16 14:22 수정 조회수 305

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

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

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

ea님의 프로필

ea

질문자

2024.02.16

감사합니다!

 

0

채널톡 아이콘