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