Vue Js ile $Emit Kullanımı (Alt Componentten Üst Componente Veri Taşıma)

Yasin DALKILIÇ
2 min readAug 12, 2020

--

Merhabalar Vuejs ile component geliştiriken bazen alt componentlerden üst componentlere veri taşımak durumunda kalabiliriz, Vuejs bize bunun için “$emit” adlı özel bir fonksiyonla beraber yapmamıza olanak sağlamaktadır.

Daha iyi anlaşılması için girilen iki sayıyı toplayıp sonucu üst componentte yazdıran bir uygulama yazalım.

Proje Oluşturma

vue create emit-app

Projeyi oluşturduktan sonra src/components/AltComponent.vue isimli dosyamızı oluşturalım.

<template><div><p>Alt Component</p><p>Sayı 1</p><input type="text" v-model="sayi1"><p>Sayı 2</p><input type="text" v-model="sayi2"><button @click="topla()">Üst'e Gönder</button></div></template><script>export default {name: "AltComponent",data() {return {sayi1: 0,sayi2: 0,};},methods: {topla() {let sonuc = +this.sayi1 + +this.sayi2;this.$emit("toplamasonucu", sonuc);}}};</script>

Tanımlamış olduğumuz componente kullanıcı tarafından girilen iki sayıyı butona tıklayınca toplayıp çağırılmış olduğu bir üst componente “sonuc” değerini “toplamasonucu” şeklinde gönderiyoruz.

Şimdi src/App.vue dosyamızda oluşturmuş olduğumuz componenti kullanalım.

<template><div id="app"><alt-component @toplamasonucu="gelen($event)"/>Üst Componente Gelen Değer{{hesaplama}}</div></template><script>import AltComponent from "./components/AltComponent.vue";export default {name: "App",data() {return {hesaplama: 0};},methods: {gelen(sonuc) {this.hesaplama = sonuc;}},components: {AltComponent}};</script>

Componentimizi import ettikten sonra alt component’de dışarıya “toplamasonucu adı ile $emit” ettiğimiz değeri “@” işaretini kullanarak yakalıyoruz içerisinde gelen “$event” bizim alt component’den dışarıya gönderdeğimiz ikinci parametre değeri olan toplama sonucunun değeridir.

Gelen değeri üst component’deki sonuc değişkeninin içerisine aktarıp üst component üzerinde gösterebilir yada kullanabiliriz.

Codesandbox:https://codesandbox.io/s/optimistic-ride-oyg2p?file=/src/App.vue:0-642

Herkese İyi Çalışmalar Dilerim. :)

--

--

Yasin DALKILIÇ
Yasin DALKILIÇ

Written by Yasin DALKILIÇ

Hi, My name is Yasin I am a Software Developer, I love so much researching and development 😊 Here is my youtube channel @webciyasin

No responses yet