Shrnutí
V této lekci jste se naučili, že:
- Composable je funkce, jejíž název začíná na
use. Používáref,computed,watchnebo funkce životního cyklu z Vue a vrací, co komponenta potřebuje: refy, vypočítané hodnoty, funkce. - Je ve vlastním souboru
.jsa exportuje se pod svým názvem:export function usePocitadlo(zacatek) { … }. Komponenta ji importuje ve složených závorkách,import { usePocitadlo } from "./usePocitadlo.js";, a zavolá ji nahoře v<script setup>. - Několik věcí vrací v objektu, ze kterého je komponenta vytáhne,
const { pocet, pridej } = usePocitadlo(0);, nebo vrací jediný ref,const jmeno = useLocalStorage("jmeno", "");. - Díky parametrům se hodí na víc věcí:
useLocalStorage(klic, vychozi)uloží cokoli pod libovolným klíčem auseNacitani(adresa)načte jakýkoli soubor. - Každé volání vytvoří nové refy, a tak má každá komponenta svůj vlastní stav. Funkce životního cyklu v composable patří ke komponentě, která ji zavolala:
useNacitani()načítá, když se připojí tato komponenta. - Stav, který sdílí několik komponent, je ref mimo jakoukoli funkci, v modulu, třeba
export const objednavka = ref([]);vobjednavka.js, a hned u něj funkce, které ho mění. Modul proběhne jen jednou, takže každý soubor, který ho importuje, dostane stejný ref. Větší aplikace na to používají knihovnu Pinia.
V další lekci, Závěrečný projekt, spojíte celý kurz ve vlastní aplikaci, sledování návyků, a uvidíte, jak dělat aplikace ve Vue na vlastním počítači.
Nejdřív si ale procvičte composable, která počítá, jak dlouho je komponenta na stránce. Použijí ji App.vue i Casovac.vue a každá bude počítat sama za sebe.
Jak psát:
Pokyny
- 1
V
useSekundy.jsnapišteuseSekundy(): vytvoří refsekundys 0, od připojení komponenty ho každou sekundu zvětší o 1, při odpojení komponenty interval zastaví a vrátísekundy. Použijte ji vCasovac.vue:const sekundy = useSekundy();. - 2
Použijte ji i v
App.vuea ukažte jejísekundymísto 0 v prvním odstavci. Pak klikněte naDoneseno: časovač objednávky zmizí a zastaví se, a čas, jak dlouho tu jste, běží dál, protože každá komponenta má svésekundya svůj interval.