Bug na escolha das oficinas quando client muda value
Closed this issue · 2 comments
Importante: Console.log em participantes e logo após return em handleSubmit()
1º Preencha corretamente todos os inputs no form
2º Mude o value da oficina selecionada
3º Dê submit e veja o resultado no console.log
{
oficinas: ["Clarinete"]
}
Mesmo depois de deselecionar.
Solução para não repetir: na função handleSelectOficina, antes de adicionar a nova oficina na array, verificar também se ela não existe na array.
function handleSelectOficina(e) {
const oficina = e.target.value
if(e.target.checked && !selectedOficinas.includes(oficina)) { // aqui
selectedOficinas.push(oficina)
setSelectedOficinas(selectedOficinas)
} else if(!e.target.checked && selectedOficinas.includes(oficina)) {
selectedOficinas.splice(selectedOficinas.indexOf(oficina), 1)
}
}
E eu vi algo muito inusitado 😮 ... Se você mudar o value de um checkbox, ao marcar pela primeira vez, o valor é o que você colocou, mas se você desmarcar em seguida, o value volta ao padrão rederizado. Absurdo!
Imaginem o cenário: No checkbox "Saxofone" eu mudo o valor para "Berimbau". Ao marcar, o valor adicionado na array é Berimbau. Se eu desmarcar e marcar novamente, o valor adicionado é "Saxofone".
Resumindo, vamos ignorar o caso em que o cliente muda o value do checkbox. Ele só vai adicionar um valor que não vai poder mais retirar... e se ele colocar uma oficina maluca como "Berimbauzin", o validator não vai deixar passar.