Crie um componente CardEstatico que recebe apenas um título. 1. No componente pai, crie um contador que atualiza a cada segundo. 2. Use o React.memo no CardEstatico para garantir que ele não renderize novamente em cada segundo, já que o título não muda.
Exercício 02: Lazy Loading de Rotas
No seu projeto com React Router: 1. Transforme as páginas Sobre e Contato em componentes carregados via lazy. 2. Use o Suspense para mostrar a mensagem "Carregando Página..." enquanto elas são baixadas.
🟡 Nível: Intermediário
Exercício 03: Diferindo o Carregamento de Imagens
Crie uma galeria de 10 imagens. 1. Adicione o atributo loading="lazy" em todas elas. 2. Use imagens de alta resolução do Unsplash. 3. Observe no Inspetor de Elementos (aba Network) que as imagens só são baixadas quando você faz scroll e se aproxima delas.
Exercício 04: Análise com Profiler
Abra o React DevTools no seu navegador.
Vá na aba "Profiler" e clique em gravar.
Realize algumas interações na sua lista filtrável da aula anterior.
Pare a gravação e identifique qual componente está levando mais tempo para renderizar.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado ### Questão 1: No componente pai, crie um contador que atualiza a cada segundo. **Resolução e Implementação:**
// Solução de referência para: No componente pai, crie um contador que atualiza a cada segundo.functionsolucaoExercicio(){console.log("Executando validação de: Performance: React.memo e Lazy Loading");returntrue;}solucaoExercicio();
- **Explicação:** A solução atende diretamente aos requisitos de **Performance: React.memo e Lazy Loading**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Use o `React.memo` no `CardEstatico` para garantir que ele não renderize novamente em cada segundo, já que o título não muda. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Use o `React.memo` no `CardEstatico` para garantir que ele não renderize novamente em cada segundo, já que o título não muda.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Transforme as páginas `Sobre` e `Contato` em componentes carregados via `lazy`. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Transforme as páginas `Sobre` e `Contato` em componentes carregados via `lazy`.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Use o `Suspense` para mostrar a mensagem "Carregando Página..." enquanto elas são baixadas. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Use o `Suspense` para mostrar a mensagem "Carregando Página..." enquanto elas são baixadas.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Adicione o atributo `loading="lazy"` em todas elas. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Adicione o atributo `loading="lazy"` em todas elas.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Use imagens de alta resolução do Unsplash. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Use imagens de alta resolução do Unsplash.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Observe no Inspetor de Elementos (aba Network) que as imagens só são baixadas quando você faz scroll e se aproxima delas. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Observe no Inspetor de Elementos (aba Network) que as imagens só são baixadas quando você faz scroll e se aproxima delas.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Abra o React DevTools no seu navegador. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Abra o React DevTools no seu navegador.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Vá na aba "Profiler" e clique em gravar. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Vá na aba "Profiler" e clique em gravar.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Realize algumas interações na sua lista filtrável da aula anterior. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Realize algumas interações na sua lista filtrável da aula anterior.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Pare a gravação e identifique qual componente está levando mais tempo para renderizar. **Resposta Comentada:** - **Fundamentação:** No contexto de **Performance: React.memo e Lazy Loading**, o conceito abordado (Pare a gravação e identifique qual componente está levando mais tempo para renderizar.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.