Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvidas na logica

let itemTarefaSelecionada = null

const selecionaTarefa = (tarefa, elemento) => {

document.querySelectorAll('.app__section-task-list-item-active').forEach(function (button) {
    button.classList.remove('app__section-task-list-item-active')
})

if (tarefaSelecionada == tarefa) {
    taskActiveDescription.textContent = null
    itemTarefaSelecionada = null
    tarefaSelecionada = null
    return
}

tarefaSelecionada = tarefa
itemTarefaSelecionada = elemento
taskActiveDescription.textContent = tarefa.descricao
elemento.classList.add('app__section-task-list-item-active')
}

Pra entender o porque das variaveis criadas e da montagem dessa função, tive que fazer uma "logica reversa": montei todo o processo na arrow function do li.onclick (como o instrutor começou na aula anterior), ai vi que essa seria uma forma de tirar toda essa logica de dentro da função de criação de tarefas.

Mesmo assim, não entendi porque a logica para desmarcar tarefas PRECISA vir antes da seleção inicial das tarefas. Também não entendi a necessidade de iniciar as duas variaveis com null, já que apenas declará-las sem valor nenhum também funciona.

1 resposta
solução!

Oi Lucas, tudo bem?

As variáveis tarefaSelecionada e itemTarefaSelecionada são utilizadas para armazenar a tarefa selecionada e o elemento HTML correspondente a essa tarefa, respectivamente. Essas variáveis são importantes para que você possa manipular e atualizar as informações da tarefa selecionada posteriormente.

Quanto à lógica de desmarcar as tarefas antes da seleção inicial, isso é feito para garantir que apenas uma tarefa seja selecionada de cada vez. Ao percorrer todos os elementos com a classe .app__section-task-list-item-active e remover essa classe, você garante que não há nenhuma tarefa selecionada anteriormente. Em seguida, você verifica se a tarefa selecionada é a mesma que já estava selecionada antes. Se for, você limpa as variáveis e retorna, desmarcando a tarefa. Caso contrário, você atualiza as variáveis com a nova tarefa selecionada e adiciona a classe .app__section-task-list-item-active ao elemento correspondente, indicando visualmente que a tarefa está selecionada.

Quanto à inicialização das variáveis com null, isso é feito para definir um valor inicial padrão. Dessa forma, você pode verificar se as variáveis estão nulas ou não em outros trechos de código, caso necessário. No caso específico dessa função, você poderia apenas declarar as variáveis sem atribuir um valor inicial, mas a escolha de inicializá-las com null pode facilitar a leitura e o entendimento do código.

Espero ter ajudado a esclarecer suas dúvidas. Um abraço e bons estudos.