O problema
Do jeito que a professora fez o código e com os testes que fiz, em uma lista de dois favoritos, ao clicar no botão de desfavoritar do primeiro item removerá o item posterior, do que o item que eu queria.
Possível solução
Usar o método filter invés do método slice.
function adicionarFavorito(novoFavorito) {
const favoritoRepetido = favorito.some(item => item.id === novoFavorito.id)
let novaLista = [...favorito];
if(!favoritoRepetido) {
novalista.push(novoFavorito);
return setFavorito(novaLista);
}
novaLista = favorites.filter((fv) => fv.id !== novoFavorito.id);
return setFavorito(novaLista);
}
Ao fazer isso, resultará em um novo array com todos os elementos que não tem o id do favorito passado como argumento.