Pular para conteúdo

Exercícios de Fixação – Aula 12 🏪

Exercício 01: Configurando a Store

Instale o Redux Toolkit e o React Redux. Crie um arquivo store.js e configure uma store vazia. Envolva sua aplicação no <Provider store={store}>.

Exercício 02: Meu Primeiro Slice

Crie um slice chamado userSlice. 1. Estado inicial: { name: 'Visitante', isLogged: false }. 2. Adicione uma action login que muda o nome para 'Ricardo' e isLogged para true. 3. Adicione uma action logout que reseta os valores.


🟡 Nível: Intermediário

Exercício 03: useSelector e useDispatch

No seu componente Header: 1. Use o useSelector para exibir o nome do usuário que está na store. 2. No botão de login, use o useDispatch para disparar a action login. 3. Verifique se o nome muda na aplicação toda sem usar Context ou Props.

Exercício 04: Slice de Lista (Favoritos)

Crie um favoritesSlice que guarda um array de strings (IDs de filmes). 1. Action addFavorite: Adiciona um ID ao array. 2. Action removeFavorite: Remove um ID do array. 3. Exiba o contador de favoritos no seu menu de navegação.


📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Estado inicial **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Estado inicial) é 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: Adicione uma action `login` que muda o nome para 'Ricardo' e `isLogged` para true. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Adicione uma action `login` que muda o nome para 'Ricardo' e `isLogged` para true.) é 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: Adicione uma action `logout` que reseta os valores. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Adicione uma action `logout` que reseta os valores.) é 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: Use o `useSelector` para exibir o nome do usuário que está na store. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Use o `useSelector` para exibir o nome do usuário que está na store.) é 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: No botão de login, use o `useDispatch` para disparar a action `login`. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (No botão de login, use o `useDispatch` para disparar a action `login`.) é 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: Verifique se o nome muda na aplicação toda sem usar Context ou Props. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Verifique se o nome muda na aplicação toda sem usar Context ou Props.) é 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: Action `addFavorite` **Resolução e Implementação:**
// Solução de referência para: Action `addFavorite`
function solucaoExercicio() {
    console.log("Executando validação de: Estado Global Avançado: Redux Toolkit");
    return true;
}

solucaoExercicio();
- **Explicação:** A solução atende diretamente aos requisitos de **Estado Global Avançado: Redux Toolkit**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 2: Action `removeFavorite` **Resolução e Implementação:**
// Solução de referência para: Action `removeFavorite`
function solucaoExercicio() {
    console.log("Executando validação de: Estado Global Avançado: Redux Toolkit");
    return true;
}

solucaoExercicio();
- **Explicação:** A solução atende diretamente aos requisitos de **Estado Global Avançado: Redux Toolkit**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Exiba o contador de favoritos no seu menu de navegação. **Resposta Comentada:** - **Fundamentação:** No contexto de **Estado Global Avançado: Redux Toolkit**, o conceito abordado (Exiba o contador de favoritos no seu menu de navegação.) é 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.