Por curiosidade, a barra lateral do shadcn tem a declaração 'use client' no topo do arquivo do componente que inclui a declaração de SidebarProvider
. Pelo meu entendimento do nextjs, quando um componente cliente é renderizado, todos os seus filhos são renderizados no lado do cliente também. Mas a documentação do shadcn incentiva a envolver todo o aplicativo com o SidebarProvider
. Isso não renderiza todo o nosso aplicativo no lado do cliente e mata o ssr como um todo?
Tenho quase certeza de que não é esse o caso, mas como isso SidebarProvider
funciona nos bastidores?
use client
não significa que a renderização do lado do servidor desapareceu/morreu. Conforme mencionado nesta discussão , os componentes do cliente também são renderizados no servidor, apenas que eles também são interativos.De que outra forma usaremos useEffect e outros ganchos do lado do cliente em componentes, se eles não forem executados no cliente nenhuma vez.
E sim, como você já mencionou no comentário, os componentes do servidor podem ser passados para os componentes do cliente como props. Um modelo mental mais simples é explicado aqui