Junior
Šta radi metoda $emit u Vue.js?
sobes.tech АИ
Одговор од АИ
Metoda $emit koristi se za generisanje prilagođenih događaja iz detetovog komponenta. To je glavni način na koji detetov komponent komunicira sa roditeljskim u Vue-u, u jednostranom toku podataka. Omogućava detetu da obavesti roditelja da se dogodio događaj i, po potrebi, da mu prosledi podatke.
Princip rada:
- U detetovom komponentu, poziva se
$emit('imeDogađaja', payload).imeDogađaja- niz, naziv događaja koji će biti generisan.payload(neobavezno) - bilo koji podaci koje želite da prosledite roditeljskom komponentu.
- U roditeljskom komponentu, pri korišćenju detetovog komponenta, prati se ovaj događaj pomoću direktive
v-onili skraćenog oblika@. - Kada detetov komponent generiše događaj sa zadatim imenom, izvršava se odgovarajući handler u roditeljskom komponentu.
Primer:
Detetov komponent (ChildComponent.vue):
<template>
<button @click="handleClick">Klikni me</button>
</template>
<script>
export default {
methods: {
handleClick() {
// Generišemo događaj 'buttonClicked' bez payload-a
this.$emit('buttonClicked');
}
}
}
</script>
Roditeljski komponent (ParentComponent.vue):
<template>
<!-- Slušamo događaj 'buttonClicked' -->
<ChildComponent @buttonClicked="handleButtonClick" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
handleButtonClick() {
// Ova metoda će se izvršiti kada detetov komponent generiše 'buttonClicked'
console.log('Dugme u detetovom komponentu je pritisnuto!');
}
}
}
</script>
$emit omogućava održavanje principa jednostranog toka podataka, sprečavajući direktnu promenu stanja roditelja od strane detetovog komponenta. Detetov komponent samo signalizira da se nešto dogodilo, a obrada i promena stanja se odvijaju u roditeljskom komponentu.