小编que*_*ton的帖子

Next.js 中的所有组件都是客户端组件,这正常吗?

我有一个下一个应用程序。我使用应用程序文件夹和 Next Auth 库。为了使每个页面都可以访问会话,我将整个应用程序包装在SessionProvider. 但由于它是useContext在幕后,我必须'use client'在各处添加该指令。这导致所有页面都是客户端,因为它们使用useSession. 所有页面组件(按钮、输入)也变成了客户端。

app/layout.tsx

const RootLayout = ({ session, children }: { session: Session; children: ReactNode }) => {
    return (
        <SessionProvider session={session}>
                <html lang={`eng`} 
                    <head>
                    </head>
                    <body>
                        {children}
                    </body>
                </html>
        </SessionProvider>
    )
}
Run Code Online (Sandbox Code Playgroud)

一些受保护的页面

'use client';

import {useSession} from "next-auth/react";

export default function ProtectedPage() {
    const {data, status} = useSession()


    return (
                <div>
                    {status === "authenticated" ? <div>data.name</div> : null}
                </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

现在所有页面和组件都在客户端呈现,这是否正常?Next Auth 文档建议将所有内容包装在提供程序中,但 Next.js …

typescript reactjs server-side-rendering next.js next-auth

6
推荐指数
1
解决办法
4221
查看次数