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

Template de rotas React Native com native stack, bottom-tabs e drawer navigator ⚛

Sempre que pensava em iniciar um novo projeto React Native me lembrava da chatice de configurar a parte de rotas e já ficava com preguiça, as vezes até com medo me perguntando: como posso fazer um projeto que tenha native stack, bottom-tabs e drawer navigator assim como o twitter?

Exemplo:
twitter

Obs.: site utilizado para editar o vídeo - veed.io

Por isso, resolvi desenvolver um projeto template que contemplasse as rotas de autenticação (auth.routes.tsx) e rotas do aplicativo (app.routes.tsx), para que quando eu fosse iniciar um novo projeto, pudesse criar a partir deste pré-configurado.

Dessa forma, optei por utilizar o expo e React Navigation e desenvolvi no modelo mais simples que consegui. Basicamente estruturei da seguinte forma:

  • src
    • context
      • AuthContext - responsável pela função de login e alteração do state de user para as rotas
    • routes
      • app.routes - rotas após logado, com drawer > bottom-tabs > native stack
      • auth.routes - deslogado, com native stack entre signIn e signUp screens
      • index - renderização condicional entre <AppRoutes /> e <AuthRoutes />
    • screens
      • Details - acesso através de botão na Home - native stack
      • Home - bottom-tabs
      • Profile - drawer
      • Settings - bottom-tabs
      • SignIn - native stack
      • SignUp - native stack

Ou seja:

  • auth.routes utilizando native stack entre as telas SignIn e SignUp
  • app.routes com o drawer entre as telas do bottom-tabs e Profile, que por sua vez, dentro do bottom-tabs possui navegação entre a Settings e native stack, que possui as telas Home e Details.

template

Obs.: esses bugs de cores ao abrir o drawer ocorrem somente no gif pois tive que redimensionar


Conclusão

Acredito que esse template possa facilitar a vida de todos, dessa forma deixo aqui o link do repo routes-template para que possam ter acesso e sugerir melhorias.

Se você achou este projeto útil, por favor considere dar uma estrela no GitHub. ⭐️
Isso significaria muito para mim e me motivaria a continuar melhorando. Obrigado!

2

Top!! To desenvolendo meu primeiro projeto freela com react native, e tava quebrando a cabeça justamente com as rotas... Vai me ajudar bastante... VALEUU!! 🤓 👏👏👏 🤓

1
2
1

No começo é algo bem chatinho mesmo, para facilitar ainda mais, estou pensando em subir também uma branch utilizando o expo-dev-client. Dessa forma o pessoal vai poder continuar a utilizar esse repo no futuro

1

muito bom marcão, pra mim criar rotas no native sempre foi uma dor de cabeça mas essa ficou bem simples e pratico dessa maneira. curti bastante👏🏻👏🏻

1

Que bom que ajudou meu mano! Eu sempre ficava relutando de iniciar um novo projeto por causa de rotas, achava muito complicado principalmente quando ia usar o drawer, pois na maioria das vezes acabava quebrando as versões e dando erro com o animated package

1

Muito bacana. 👏
Obrigado por compartilhar.
Aproveitando: Alguém já tentou utilizar o Expo Router para as rotas? Li que facilitaram bastante o processo, mas não tive tempo de tentar implementar.

1

Muito obrigado! Ainda não, antigamente via muitas pessoas reclamando sobre usar o expo router, mas estou pensando em fazer um novo projeto para testar

1
1
1

Demais, eu até subi uma outra branch no repo chamada feat/stackHeader dando um exemplo de como remover o header do drawer navigator somente nas telas que estão dentro do native stack para deixar o header padrão com o botão de voltar para as telas que fazem a navegação por stack, pois essa parte é ainda mais complicada.

1

Incrível, quem trabalha/estuda react native sabe a chatice que é configurar as rotas e ainda mais se você estiver usando typescript!

1

Muito obrigado! Realmente, a pouco tempo eu comecei a usar typescript em todos os meus projetos e tinha muito medo se saberia fazer as tipagens corretas, mas depois que a gente aprender a fazer certinho, fica bem melhor até por causa das sugestões.

1
1
1