出于好奇,shadcn 的侧边栏在其组件文件顶部有“使用客户端”声明,其中包括 的声明SidebarProvider
。根据我对 nextjs 的理解,当渲染客户端组件时,其所有子组件也会在客户端渲染。但 shadcn 文档鼓励使用 包装整个应用程序SidebarProvider
。这不会在客户端渲染我们的整个应用程序并整体终止 ssr 吗?
我很确定事实并非如此,但这SidebarProvider
在底层是如何运作的呢?
出于好奇,shadcn 的侧边栏在其组件文件顶部有“使用客户端”声明,其中包括 的声明SidebarProvider
。根据我对 nextjs 的理解,当渲染客户端组件时,其所有子组件也会在客户端渲染。但 shadcn 文档鼓励使用 包装整个应用程序SidebarProvider
。这不会在客户端渲染我们的整个应用程序并整体终止 ssr 吗?
我很确定事实并非如此,但这SidebarProvider
在底层是如何运作的呢?
use client
并不意味着服务器端渲染消失/终止。正如本讨论中提到的,客户端组件也在服务器上渲染,只是它们也是交互式的。如果 useEffect 和其他客户端钩子一次都不能运行在客户端上,我们还能如何在组件中使用它们呢?
是的,正如您在评论中提到的,服务器组件可以作为 props 传递到客户端组件。这里解释了一个更简单的思维模型