Executando verificação de segurança...
5

Olá cara, tudo bem?

Desculpe a minha ignorância, talvez eu não tenha entendido direito o proposito ou o problema que você está tentando resolver.

Mas, isso não seria o mesmo que usar o novo loading.tsx do Next.js com um <Suspense>?

Fora que, da forma como você esta fazendo, com uma função changeRoute em um <button>, talvez você esteja perdendo uma das melhores funcionalidades do Next, que é o next/link com <Link/>. Com ele o Next não recarrega a próxima página integralmente, só carrega os chunks necessários e recicla o que já foi baixado e carregado e que na próxima página é igual, reduzinho rede e tempo de carregamento.

Fora que, com o next/link, todos os link que estão na rolagem atual, já são pré-carregados e pré-renderizados em background, para quando algum for clicado, nem dê tempo de aparecer loader nem ver renderização nenhuma, a página nova já explode pronta na tela.

Como disse, não sei se entendi direito seu problema, mas espero ter contribuído para o assunto.

Abraco,
TMJ!

Carregando publicação patrocinada...
3

Opa, estou bem e você? Gostei dos questionamentos, espero que consiga te ajudar a entender!

Na verdade não seria o mesmo que loading.tsx. O loading é um carregamento 'dentro' do arquivo que você quer renderizar, geralmente usado quado o arquivo ainda não terminou de ser montado completamente.
O objetivo da minha lib é lidar com a transição das rotas!
Quando se clica em um <Link /> apesar de ser rapido as vezes, ainda pode ou não ter delay, e é nesse caso que se faz necessário uma animação de loading/progress loading, por exemplo.

Agora a outra duvida sobre performace, e tall...
Atualmente no Next.js existem algumas formas de você acessar uma rota:

  • Digitando a url
  • Fazendo o direcionamento com a tag
  • Fazendo o uso do hook useRouter()

O que minha biblioteca faz é monitorar quando uma tag link é clicada no seu projeto, por isso ela á iria funcionar 'sempre'.
E quando eu registro um <ContainerLink />, seja em uma rota especifica, ou seja globalmente, tudo o que estou fazendo é criando todos os que você disse precisar.
Então isso não atrapalha o recurso PREFETCH do Next.Js, já que as rotas já estão disponiveis no seu navegador, em algum lugar.
Tudo que o changeRoute() irá fazer é apenas chamar um evento para clicar naquele link que tu queria, de uma meneira bem facilitada.

Então, na verdade a minha lib não atrapalha a performace, ela até melhora se parar para pensar!

O atual useRouter() oferece uma maneira de mudar rotas, mas nenhuma animação aparece na tela mostrando ao usuario que alguma coisa esta acontecendo, já que o recurso de eventos foi depreciado.
O que minha lib oferece com o changeRoute() é justamente isso, uma maneira de você poder transicionar de telas, susbistuindo muitos casos de uso do useRouter() para trocar de rota, e ainda ter uma animação.

Novamente dizendo, quando se registra um <ContainerLink /> é quando você quer chamar uma rota com changeRoute(), com a animação, sem ser diretamente atraves de um tag , que nesses casos, seria quando a pessoa faria o usuo do useRouter(). Chamando uma rota com função.

Realmente espero que consegui esclarecer suas dúvidas, mas se algo ainda ficou nebuloso. Pfv, me pergunte! Abraço