Shrnutí
V této lekci jste se naučili, že:
- Komponenta nemůže měnit data svého rodiče. Že se něco stalo, mu oznámí událostí:
const emit = defineEmits(["objednat"]);ji deklaruje aemit("objednat", polozka.id)ji vyšle, ve skriptu nebo přímo v šabloně,@click="emit('objednat', polozka.id)". - Rodič poslouchá pomocí
@objednat="pridejDoObjednavky"a hodnoty události se stanou argumenty obsluhy:emit("zmenit-pocet", polozka.id, 1)zavolázmenPocet(id, zmena). - Události se pojmenovávají podle toho, co se stalo nebo o co komponenta žádá, jejími slovy, a jména z několika slov se píšou v kebab-case:
zmenit-pocet. - Každý údaj má jediný zdroj pravdy. Když ho potřebuje víc komponent, žije v jejich společném rodiči, který jim ho předává jako props a mění ho, když ho o to událostmi požádají. To je přesun stavu nahoru (lifting state up). Kopie dat ve vlastním refu komponenty by brzy ukazovala něco jiného než zbytek stránky.
- Komponenta, která mění svou props, dostane
[Vue warn]: Set operation on key "pocet" failed: target is readonly.a nic se nezmění: musí vyslat událost. v-modelfunguje i na vlastních komponentách:<Mnozstvi v-model="pocet" />v rodiči,const pocet = defineModel();v komponentě. Změna modelu změní hodnotu rodiče a model může jít dál do textového pole uvnitř,<textarea v-model="text">.
V další lekci, Sloty, komponentě předáte nejen hodnoty, ale i kus šablony: obsah mezi jejími tagy, jako to děláte u prvků HTML.
Nejdřív si ale vše procvičte na seznamu objednávek, které má barista připravit. Listek.vue má jen svůj styl a zbytek napíšete sami.
Jak psát:
"Shift + ů
{Alt Gr + b
}Alt Gr + n
[Alt Gr + f
]Alt Gr + g
<Alt Gr + ,
>Alt Gr + .
/Shift + ú
|Alt Gr + w
&Alt Gr + c
`Alt Gr + ý
$Alt Gr + ů
Pokyny
- 1
V
Listek.vuenapište komponentu s povinnou propslistektypuObject. Ukáže<li class="listek">se jménem zákazníka a nápojem, třebaAnna: Cappuccino, a tlačítkemHotovo. VApp.vuekomponentu importujte a ukažte jedenListekpro každý lístek v polifronta. - 2
Kliknutí na Hotovo vyšle
hotovosidlístku aApp.vuelístek z polefrontaodebere. Když jsou hotové všechny lístky, stránka ukáže Všechno je hotové!, které už v šabloně je.