1
resposta

Ordem da execução que altera o booleano "selecionado"

Boa tarde. Segui os passos do professor e meu código está rodando corretamente até o momento, só que estou meio perdido na ordem com que as coisas aconteceram para que o booleano "selecionado" fosse alterado para "true" e, portanto, habilitasse a seleção do item individualmente.

Mais especificamente, consegui pegar por cima que, em algum momento, a prop tarefaSelecionada "carregou" a tarefa responsável por ativar um evento onClick em App.tsx e, fazendo comparação dessa tarefa com todas as tarefas da lista, alterou apenas aquela com a qual o id batesse. Porém, não estou conseguindo entender como e quando tarefaSelecionada pegou todas as props da tarefa clicada para que essa comparação fosse realizada. Alguém poderia me ajudar? :)

1 resposta

Oi Augusto, tudo bem?

Desculpe a demora em retornar.

Pelo que entendi, você está com dúvidas sobre como foi feita a implementação da seleção de tarefas individualmente na sua lista de tarefas no React. Vou explicar melhor como isso foi feito.

Primeiramente, é importante entender que para habilitar a seleção de uma tarefa individualmente, precisamos associar a cada tarefa um estado booleano que representa se ela está selecionada ou não. Esse estado será armazenado no componente pai que lista as tarefas, no nosso caso, o App.tsx.

Para isso, usamos a função useState do React para criar uma variável de estado chamada "selecionado" e uma função "setSelecionado" que nos permite atualizar o valor desse estado. Inicialmente, o valor de "selecionado" é falso para todas as tarefas.

Em seguida, criamos uma função chamada "selecionaTarefa" que é acionada quando uma tarefa é clicada. Essa função recebe como argumentos a tarefa selecionada e uma interface que representa a tarefa em si, com todas as suas propriedades.

Dentro da função "selecionaTarefa", chamamos a função "setSelecionado" passando a tarefa selecionada como parâmetro. Em seguida, usamos a função "setTarefas" para iterar sobre o array de tarefas e atualizar o estado de "selecionado" de cada uma delas.

Para fazer essa iteração, usamos uma função de callback que recebe como argumento o estado anterior das tarefas (tarefasAnteriores) e retorna um novo array de tarefas atualizado. Para atualizar cada tarefa, usamos a função "map" para percorrer cada item do array e retornar um novo objeto com as mesmas propriedades da tarefa original, mas com o valor de "selecionado" atualizado de acordo com a tarefa que foi selecionada.

Para atualizar o valor de "selecionado", usamos uma operação ternária que verifica se o id da tarefa sendo iterada é igual ao id da tarefa selecionada. Se for, o valor de "selecionado" é setado para true, caso contrário, é setado para false.

Com isso, conseguimos atualizar o estado de "selecionado" para cada tarefa individualmente quando ela é clicada, e associar um feedback visual a essa seleção usando uma classe CSS que é adicionada ao item da lista de tarefas.

Espero ter ajudado a esclarecer suas dúvidas!