1
resposta

Codigo "desnecessário"?

Montei o código para marcar tarefas concluídas apenas com essas linhas de código e o resultado foi o mesmo:

svgIcon.addEventListener("click", evento => {
        
        evento.stopPropagation();
        li.classList.add("app__section-task-list-item-complete");
    })

Não entendi o porquê de varias linhas do código:

 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')
    }

Qual a utilidade de criar o button? Onde ele foi criado? Não consigo encontrá-lo no HTML pelo no DevTools.

Qual a utilidade do if? Não entendi seu parametro: ele pergunta se tarefa contem a propriedade concluida ou se a propriedade "concluida" recebe true? Creio ser o primeiro caso pois na aba application do DevTools é possivel ver que a propriedade continua recebendo false. O problema q toda tarefa já é criada com a propriedade "concluida", entao, toda tarefa já estaria marcada.

Vi uma duvida semelhante em um outro tópico dessa aula e as respostas n fizeram sentido:

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.

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 appsection-task-list-item-complete precisa ser adicionada à li para indicar visualmente que a tarefa está concluída.

Recarregando a pagina, a tarefa não permanece concluída.

1 resposta

Olá, Lucas!

Sobre a criação do botão, ele é criado dinamicamente no JavaScript utilizando o método document.createElement('button'). Isso significa que ele não está presente no HTML inicialmente, mas é adicionado pelo código JavaScript. Portanto, não é possível encontrá-lo no DevTools ao inspecionar o HTML.

A utilidade desse botão é desativá-lo quando o ícone SVG é clicado. Isso é feito através do método button.setAttribute('disabled', true). Além disso, a classe appsection-task-list-item-complete é adicionada à li para indicar visualmente que a tarefa está concluída.

Agora, sobre o if, ele serve para verificar se a propriedade concluida da tarefa é verdadeira. Se for, o botão é desativado e a classe appsection-task-list-item-complet e é adicionada à li.

Isso é útil para casos em que a página é recarregada e a tarefa já estava concluída anteriormente. Dessa forma, a marcação correta é aplicada mesmo após o recarregamento da página.

Quanto à propriedade concluida que continua recebendo false mesmo após recarregar a página, é importante verificar se a tarefa está sendo salva corretamente no localStorage. Talvez seja necessário verificar se a lógica de salvar a propriedade concluida está correta.

Valeu!