Rumah > hujung hadapan web > tutorial js > Konsep Emit dalam Vue.Js

Konsep Emit dalam Vue.Js

Susan Sarandon
Lepaskan: 2024-10-17 06:20:29
asal
215 orang telah melayarinya
  • Hello! Dalam Vue.js, adalah mungkin untuk bertukar-tukar maklumat antara komponen menggunakan acara emit. Komponen anak boleh menghantar maklumat kepada komponen induk menggunakan peristiwa pancaran. Mari kita lihat lebih dekat peristiwa emit di bawah.

Tentukan peristiwa pancaran (pengendali acara)

Fungsi defineEmits digunakan untuk mentakrif dan menggunakan

peristiwa memancarkan.

Vue.Js da Emit tushunchasi

Goooo:

  1. *Tentukan acara (pengendali acara) *:
    Menggunakan fungsi defineEmits, kita boleh menentukan peristiwa yang dipancarkan oleh komponen.

  2. Acara keluaran:
    Acara boleh dikeluarkan menggunakan fungsi emit.

Kita akan lihat dalam contoh terperinci di bawah:

Contoh 1: Peristiwa Mudah

  1. Komponen Kanak-Kanak: ChildComponent.vue
<template>
  <button @click="notifyParent">Click me</button>
</template>

<script setup>
import { defineEmits } from 'vue'

// Eventlarni aniqlash
const emit = defineEmits(['myEvent'])

const notifyParent = () => {
  emit('myEvent', 'Assalamu alaykuuuum bratanim')
}
</script>
Salin selepas log masuk
  1. ParentComponent: ParentComponent.vue
<template>
  <div>
    <ChildComponent @myEvent="handleMyEvent" />
  </div>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue'

const handleMyEvent = (message) => {
  console.log(message) // Output: Assalamu alaykuuuum bratanim
}
</script>
Salin selepas log masuk

Contoh 2: Peristiwa dengan hujah

  1. Komponen Kanak-Kanak: ChildComponent.vue
<template>
  <button @click="sendData">Send Data</button>
</template>

<script setup>
const emit = defineEmits(['sendData'])

const sendData = () => {
  emit('sendData', { id: 1, name: 'Jonibek Davronov' })
}
</script>
Salin selepas log masuk
  1. ParentComponent: ParentComponent.vue
<template>
  <div>
    <ChildComponent @sendData="receiveData" />
  </div>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue'

const receiveData = (data) => {
  console.log(data) // Output: { id: 1, name: 'Jonibek Davronov' }
}
</script>
Salin selepas log masuk

Contoh 3: Acara dengan pengesahan

  1. Komponen Kanak-Kanak: ChildComponent.vue
<template>
  <button @click="sendData">Send Validated Data</button>
</template>

<script setup>
const emit = defineEmits({
  // Event nomi va uni qabul qiladigan argumentlar uchun validatsiya
  sendData: (payload) => {
    if (typeof payload.id === 'number' && typeof payload.name === 'string') {
      return true
    } else {
      console.warn('Invalid payload')
      return false
    }
  }
})

const sendData = () => {
  emit('sendData', { { id: 1, name: 'Jonibek Davronov' })
}
</script>
Salin selepas log masuk
  1. ParentComponent: ParentComponent.vue
<template>
  <div>
    <ChildComponent @sendData="handleValidatedData" />
  </div>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue'

const handleValidatedData = (data) => {
  console.log(data) // Output: { id: 1, name: 'Jonibek Davronov' }
}
</script>
Salin selepas log masuk

Kesimpulannya:

Dalam Vue.js, adalah mungkin untuk bertukar maklumat antara komponen menggunakan peristiwa pancaran. Anda boleh menentukan peristiwa menggunakan fungsi defineEmits dan memancarkan peristiwa menggunakan fungsi emit (kepada komponen induk). Dengan peristiwa ini, komponen anak boleh menghantar maklumat atau melaporkan kepada komponen induk. Dengan mengesahkan peristiwa, kami boleh memastikan bahawa data yang dihantar adalah betul.

Anda boleh mengikuti kami di rangkaian dan jika artikel itu berguna, komen dan kongsikannya dengan rakan Vuechi anda. ?

Atas ialah kandungan terperinci Konsep Emit dalam Vue.Js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan