Junior
Ի՞նչ է անում $emit մեթոդը Vue.js-ում։
sobes.tech AI
Պատասխան AI-ից
$emit մեթոդը օգտագործվում է օգտագործողի կողմից սահմանված իրադարձություններ ստեղծելու համար երեխա կոմպոնենտից: Սա հիմնական միջոցն է, որով երեխա կոմպոնենտը շփվում է ծնող կոմպոնենտի հետ Vue-ի միակ ուղղությամբ տվյալների հոսքի մեջ: Այն թույլ է տալիս երեխա կոմպոնենտին տեղեկացնել ծնողին, որ ինչ-որ իրադարձություն տեղի է ունեցել, և անհրաժեշտության դեպքում փոխանցել տվյալներ:
Աշխատանքի սկզբունքը՝
- Երեխա կոմպոնենտում կանչվում է
$emit('eventName', payload):eventName- տող, որը նշում է ստեղծվող իրադարձության անունը:payload(ոչ պարտադիր) - ցանկացած տվյալ, որը պետք է փոխանցվի ծնող կոմպոնենտին:
- Ծնող կոմպոնենտում, երբ օգտագործում է երեխա կոմպոնենտը, այս իրադարձությունը լսվում է
v-onդիրէկտիվով կամ կարճ ձևով@: - Երբ երեխա կոմպոնենտը ստեղծում է նշված անունով իրադարձություն, համապատասխան մշակողը կատարվում է ծնող կոմպոնենտում:
Օրինակ՝
Երեխա կոմպոնենտ (ChildComponent.vue):
<template>
<button @click="handleClick">Սեղմիր ինձ</button>
</template>
<script>
export default {
methods: {
handleClick() {
// Ստեղծում է `buttonClicked` իրադարձություն առանց payload-ի
this.$emit('buttonClicked');
}
}
}
</script>
Ծնող կոմպոնենտ (ParentComponent.vue):
<template>
<!-- Լսում է `buttonClicked` իրադարձությունը -->
<ChildComponent @buttonClicked="handleButtonClick" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
handleButtonClick() {
// Այս մեթոդը կիրականացվի, երբ երեխա կոմպոնենտը ստեղծի `buttonClicked` իրադարձությունը
console.log('Երեխա կոմպոնենտի կոճակը սեղմվեց!');
}
}
}
</script>
$emit թույլ է տալիս պահպանել միակ ուղղությամբ տվյալների հոսքի սկզբունքը, կանխելով ծնողի ուղղակի փոփոխությունը երեխա կոմպոնենտից: Երեխա կոմպոնենտը միայն ազդանշան է տալիս տեղի ունեցածի մասին, իսկ վիճակի փոփոխությունը կատարվում է ծնող կոմպոնենտում։