Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Implementando a mensagem para lista vazia

No arquivo ui.js, dentro da função renderizarPensamentos(), no try/catch, adicionei um if-else. Trecho do código:

try {
      const pensamentos = await api.buscarPensamentos();

      if (pensamentos.length == 0) {
        // criação de uma constante "mensagem", caso não haja nenhum pensamento cadastrado no projeto
        const mensagem_vazia = document.createElement("p");
        mensagem_vazia.textContent =
          "Nada por aqui ainda, que tal compartilhar alguma ideia?";
        lista_pensamentos.appendChild(mensagem_vazia);
        mensagem_vazia.classList.add("lista-vazia-mensagem");

        // criação da imagem de uma gaveta vazia - quando não há pensamentos
        const imagem_sem_pensamentos = document.createElement("img");
        imagem_sem_pensamentos.src = "img/lista-vazia.png";
        imagem_sem_pensamentos.alt = "Gaveta vazia";
        lista_pensamentos.appendChild(imagem_sem_pensamentos);
        imagem_sem_pensamentos.classList.add("lista-vazia-imagem");
      } else {
        pensamentos.forEach(user_interface.adicionarPensamentoNaLista);
      }
    } catch (error) {
      alert("Erro ao renderizar pensamentos.");
    }
  },

Após a implementação, como o texto e a imagem não estavam centralizados, acrescentei suas respectivas classes no style.css:

.lista-vazia-mensagem,
.lista-vazia-imagem {
  display: block;
  text-align: center;
  width: 100%;
}

.lista-vazia-imagem {
  max-width: 120px;
  margin: 0 auto;
}

Link para o projeto no GitHub: https://github.com/diegofc2002/projeto-memoteca.

2 respostas
solução!

Oi, Diego! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da solução que você encontrou para tratar o caso em que não existem pensamentos cadastrados. Além de exibir uma mensagem amigável para a pessoa usuária, você também adicionou uma imagem ilustrativa e se preocupou com a estilização para melhorar a apresentação visual da página. A utilização do if (pensamentos.length == 0) deixou a lógica clara e fácil de entender.

Uma dica interessante para o futuro é utilizar o método replaceChildren() para limpar elementos antigos da lista antes de renderizar novos conteúdos. Veja este exemplo:


const lista = document.querySelector("#lista");

lista.replaceChildren();

Esse código remove todos os elementos filhos existentes dentro da lista antes de adicionar novos itens, ajudando a evitar duplicações durante a renderização.

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá, Rafaela! Espero que esteja bem.

Muito obrigado pela resposta e atenção. Agradeço também pela dica de utilizar o replaceChildren(); já conhecia esse método, mas ainda não tinha tido a oportunidade de colocá-lo em prática.

Tenha um excelente dia!