728x90
js로 프로젝트를 구현했을때는 NextAuth를 제대로 이용하지 못해서
자체로그인을 따로 만들었고,
그걸 헤더부분에서 쓰려니까 리덕스를 사용해야 하는 상황이였다.
"use client";
import { useSelector } from "react-redux";
import LoginBtn from "./LoginBtn";
import SignupBtn from "./SignupBtn";
import LogoutBtn from "./LogoutBtn";
export default function HeaderLoginP() {
const user2 = useSelector(state => state.loginState.user);
const token = window.localStorage.getItem("accessToken");
// console.log(user2?.email);
return (
<div>
{user2 || token ? (
<div className="navbtn">
{/* <h2>{user2?.email}님</h2> */}
<h2>안녕하세요</h2>
<LogoutBtn className="navbtn2" />
</div>
) : (
<div className="navbtn">
<LoginBtn className="navbtn2" />
<SignupBtn className="navbtn2" />
</div>
)}
</div>
);
}
근데 NextAuth 이놈 진짜 최고다...
자체 로그인을 만들필요도 없는것은 물론이요..
useSession을 이용해서 로그인상태(로그인여부)를 파악할수도 있고,
헤더에서 바로 사용할수도 있다. 리덕스가 필요없는 훨씬 간단한 코드가 되었다!!!!!! 아주 최고야!!!!
"use client";
import { useSession } from "next-auth/react";
export default function HeaderP() {
const { data: session, status } = useSession();
return (
<div>
<h2>
{status === "loading" ? (
<p>Loading</p>
) : status === "authenticated" ? (
<p>{session?.user?.name}님</p>
) : (
<p>로그인하세요</p>
)}
</h2>
</div>
);
}
"use client";
import HeaderP from "./lib/next-auth/HeaderP";
import { SessionProvider } from "next-auth/react";
export default function HeaderBtn() {
return (
<div>
<SessionProvider>
<HeaderP />
</SessionProvider>
</div>
);
}
그래서 HeaderBtn을 그냥 layout에서 사용하면 리덕스필요없이 끝이다 !!!!!
완전 장점 !!!!
728x90
'교육후 개인공부 > TroubleShooting' 카테고리의 다른 글
[troubleshooting] 배포후 로그인이 안된다..... (0) | 2024.05.21 |
---|---|
[TroubleShooting] Props내리는과정에서 알수없는 오류 (0) | 2024.05.12 |
[TroubleShooting] NextAuth에서 token과 session (0) | 2024.05.10 |
[TroubleShooting] query data를 여러개 가져오는과정중 발생한에러 (1) | 2023.10.21 |
[TroubleShooting] react query이용중 에러를 만나다. (0) | 2023.09.15 |