Odebrání z pole
Program potřebuje i způsob, jak kapelu zase vyřadit. Ani teď neměňte pole, které je ve stavu: vytvořte nové, bez té položky. Přesně to dělá filter(). Vytvoří nové pole z položek, pro které jeho funkce vrátí true:
function odeber(id) {
setProgram((program) => program.filter((idKapely) => idKapely !== id));
}Zůstane každé id, které není id, takže nové pole má všechno kromě odebrané kapely. Metody, které mění pole přímo, jako pop() nebo sort(), jsou pro stav stejně špatně jako push(). Tři tečky, filter() a map() vytvářejí nová pole, a tak se používají ony. (Když potřebujete seřazený seznam, seřaďte kopii: [...kapely].sort(…).)
Po odebrání kapela v program není a při dalším vykreslení se změní všechno, co na něm závisí: v mojeKapely už chybí a podmínka z minulého cvičení u ní zase ukáže tlačítko Přidat. Je to jeden stav a stránka ho všude následuje.
Když je program prázdný, stojí nadpis Můj program nad ničím. To je práce pro podmínku z lekce Seznamy a podmínky: pomocí ? : ukažte podle program.length buď odstavec se zprávou, nebo seznam.
Jak psát:
Pokyny
Dejte každé kapele pod nadpisem Můj program tlačítko Odebrat, které její id vyřadí z program pomocí filter(). Kapela pak zase dostane své tlačítko Přidat.
Když je program prázdný, ukažte místo seznamu odstavec V programu zatím nic nemáte.