Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Algumas dúvidas da aula

Achei essa aula bem confusa e não entendi o que foi feito.

 const button = document.createElement('button')

    svgIcon.addEventListener('click', (event) => {
        event.stopPropagation()
        button.setAttribute('disabled', true)
        li.classList.add('app__section-task-list-item-complete')
    })

    if(tarefa.concluida){
        button.setAttribute('disabled', true)
        li.classList.add('app__section-task-list-item-complete')
    }

Minhas dúvidas são:

  1. Por que criamos um botão sendo que o evento de clique é diretamente no ícone SVG? No vídeo o professor fala que é para "inicializar" o botão de concluído, mas não entendi o que ele quis dizer com isso.

  2. O que o stopPropagation() está fazendo nesse código?

  3. Por que setamos o atributo "disabled", true no botão?

  4. Por que precisamos setar tanto no addEventListener quanto no if esse setAttribute?

  5. Por que precisamos do if nesse caso? Qual o papel dele? Considerando que o clique no ícone SVG já está inserindo a nova classe à li.

2 respostas
solução!

Olá Dara! Tudo ok contigo?

Vamos tentar esclarecer suas dúvidas uma por uma:

  1. O botão é criado para representar a ação de concluir uma tarefa. O ícone SVG é apenas a representação visual desse botão, mas a ação de concluir a tarefa é associada ao botão. Quando o professor fala em "inicializar" o botão, ele se refere ao processo de criar esse botão e associá-lo à ação de concluir a tarefa.

  2. O método stopPropagation() é usado para impedir que o evento de clique se propague para elementos pai. No seu caso, quando você clica no ícone SVG, você não quer que esse clique afete outros elementos, como a li que contém o ícone. Portanto, você usa stopPropagation() para garantir que o clique no ícone SVG não afete nada além do próprio ícone.

  3. O atributo disabled é definido como true para desativar o botão depois que a tarefa é concluída. Isso é feito para evitar que a tarefa seja concluída novamente. Uma vez que uma tarefa é concluída, não faz sentido permitir que ela seja concluída novamente, por isso o botão é desativado.

  4. O setAttribute é definido tanto no addEventListener quanto no if para cobrir dois cenários diferentes. No addEventListener, ele é definido para desativar o botão quando o ícone SVG é clicado. No if, ele é definido para desativar o botão se a tarefa já estiver concluída quando a página é carregada. Isso pode acontecer se a tarefa foi concluída em uma sessão anterior e a página foi recarregada.

  5. O if é necessário para verificar se a tarefa já está concluída quando a página é carregada. Como mencionado na resposta anterior, isso pode acontecer se a tarefa foi concluída em uma sessão anterior e a página foi recarregada. Se a tarefa já estiver concluída, o botão precisa ser desativado e a classe app__section-task-list-item-complete precisa ser adicionada à li para indicar visualmente que a tarefa está concluída.

Era isso. Espero ter ajudado!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓

Entendi em relação a criação do botão, mas ele não foi referenciado ao svgIcon , mesmo inspecionando a pagina, não encontro ele dentro da li, e se recarrego a pagina perco visualmente o verde de "completo".