Exercícios
-
Adicione um
ActivityIndicatordentro de cada card enquanto a imagem (futura) do evento carregaria. Por enquanto, simule com umsetTimeoutde 1 segundo nouseEffectantes de setarloadingcomofalse. Observe como o feedback visual muda a percepção de velocidade. -
O stack navigator mostra “Detalhe do Evento” como título fixo. Modifique para que o título da tela seja o nome do evento. Dica: use a prop
optionscomo função noStack.Screen, que receberoute.params. -
Adicione um
RefreshControlnaFlatListpara permitir pull-to-refresh. Quando o usuário puxar a lista para baixo, refaça o fetch e atualize os dados. Consulte a documentação doFlatListno React Native. -
O
EventDetailScreenbusca a lista inteira e filtra peloid, assim como a versão web. Uma alternativa é passar o evento inteiro como parâmetro de navegação (emroute.params), evitando um segundo fetch. Implemente essa abordagem e compare: quando ela é suficiente? Quando ela falha? -
Crie uma tab bar na parte inferior da tela com duas abas: “Eventos” (a lista atual) e “Sobre” (uma tela estática com o nome e a descrição do TamoJunto). Use
@react-navigation/bottom-tabs. A aba “Eventos” deve conter o stack navigator, preservando a navegação lista → detalhe. -
Copie o hook
useEvents.tspara o projeto web e refatore oEventList.tsxpara usá-lo. Compare o código antes e depois: o que está duplicado entre web e mobile? O que é genuinamente diferente?
Referências
A documentação do React Native cobre componentes, APIs e guias de plataforma: https://reactnative.dev/docs/getting-started.
A documentação do Expo tem guias de setup e referências de todas as bibliotecas incluídas: https://docs.expo.dev/.
O React Navigation documenta todos os tipos de navegador (stack, tab, drawer) com exemplos interativos: https://reactnavigation.org/docs/getting-started.