NextJS에서 Next-Auth를 사용할 때 논스톱 재렌더링
P粉811329034
P粉811329034 2023-09-05 11:08:49
0
1
560
<p>내가 좋아하는 "/app/api/auth/[...nextauth]/route.js"</p> <pre class="brush:php;toolbar:false;">"next-auth/next"에서 NextAuth 가져오기;; "next-auth/providers/google"에서 GoogleProvider를 가져옵니다. const authOptions = { 내보내기 제공업체: [ Google공급자({ 클라이언트 ID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, }), ], }; const 핸들러 = NextAuth(authOptions); 내보내기 { 핸들러를 GET으로, 핸들러를 POST로 };</pre> <p>와sessionProvider.js</p> <pre class="brush:php;toolbar:false;">"클라이언트 사용" "반응"에서 반응을 가져옵니다;; "next-auth/react"에서 import { SessionProvider }; const 세션 제공자 = ({ 하위 }) => { return <SessionProvider>{children}</SessionProvider> }; 기본 세션 제공자 내보내기</pre> <p>내가 사용하는 앱은 Layout.js 中</p> <pre class="brush:php;toolbar:false;"><html lang="en"> <body className={inter.className}> <Sessionprovider>{children}</Sessionprovider> </body> </html></pre> <p>내가 좋아하는 page.js</p> <pre class="brush:php;toolbar:false;">"클라이언트 사용" "next-auth"에서 import { getServerSession }을;; "next-auth/react"에서 import { signIn, signOut, useSession }를;; "./api/auth/[...nextauth]/route"에서 { authOptions } 가져오기;; 기본 비동기 함수 내보내기 Home() { const { 데이터: 세션, 상태 } = useSession(); console.log(세션); const _signInWithGoogle = async () => { signIn("google")을 기다립니다; }; 반품 ( <div className="flex justify-center items-center flex-col gap-3 p-5"> <h1 className="font-semibold text-lg">홈 페이지</h1> {세션? ( <버튼 onClick={() => 사인아웃()} className="p-1 bg-blue-400 text-white 글꼴-semibold rounded-md hover:bg-blue-500" > 로그아웃 </버튼> ) : ( <버튼 onClick={_signInWithGoogle} className="p-1 bg-blue-400 text-white 글꼴-semibold rounded-md hover:bg-blue-500" > 로그인 </버튼> )} </div> ); }</pre> <p>앱을 실행하면 계속해서 다시 렌더링됩니다. 이에 대한 도움을 주시면 대단히 감사하겠습니다. 콘솔에는 사용자 개체가 표시되므로 로그인 구성 요소에 남아 있습니다. </p>
P粉811329034
P粉811329034

모든 응답(1)
P粉828463673

클라이언트 구성 요소에서 async를 제거해야 합니다.

으아악

https://github.com/vercel/next.js/issues/48822

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿