Exercícios
-
Adicione um campo “Criado em” ao
EventDetailque mostre a data de criação do evento formatada comtoLocaleDateString("pt-BR"). Não adicione esse campo aoEventCard— é informação demais para a lista. -
O
EventListatual mostra “Carregando eventos…” como texto puro. Substitua por um indicador mais visível: um<div>centralizado com fonte maior e cor cinza. Faça o mesmo para a mensagem de erro, usando uma cor vermelha. -
Crie uma página “Não encontrado” que é renderizada quando o usuário acessa uma URL que não corresponde a nenhuma rota (ex:
/sobre). Use a rotapath="*"no React Router. -
O
EventDetailbusca a lista inteira e filtra peloid. Se o backend tivesse um endpointGET /api/events/:id(exercício 6 do capítulo Armazenando e Servindo Dados), como o código mudaria? Reescreva ouseEffectpara usar esse endpoint hipotético e compare. -
Implemente um botão “RSVP” no
EventDetail. Ao clicar, ele muda de “RSVP” para “Confirmado ✓” (com cor verde) usandouseState. Esse estado é local — recarregar a página zera o botão. Persistir no servidor é tarefa de um capítulo futuro. -
Adicione um
<input>de busca noEventList. UseuseStatepara armazenar o texto digitado e filtre o arrayeventscom.filter()antes do.map(). O filtro deve buscar no título e na descrição do evento (case-insensitive).
Referências
A documentação oficial do React é interativa e cobre todos os conceitos desse capítulo com exemplos editáveis: https://react.dev/learn.
Para o React Router, a documentação com exemplos e guias de migração está em: https://reactrouter.com/.
A documentação do Vite explica a configuração de proxy e outras opções do servidor de desenvolvimento: https://vite.dev/config/server-options.