AlpineJS dispatch komponen diluar parent div

Cara interaksi Alpinejs dispatch elemen div ke luar elemen parent child.

Ilustrasi
Ilustrasi

Untuk memanipulasi elemen HTML dengan bantuan framework AplineJS, biasanya interaksi dilakukan dalam satu blok keluarga saja. Misalnya, element parent (ayah) hanya bisa memerintah ke elemen child (anak).

<div x-data="{ open: false }"> <!-- parent element -->

    <button @click="open = true">Expand</button> <!-- child element -->
 
    <span x-show="open"> <!-- child element -->
        Content...
    </span>

</div>

Bagaimana kalau elemen parent atau elemen child sekalipun bisa menginterupsi keluar dari elemen keluarga mereka. Ceritanya, anak ayah, memberi intruksi ke anak tetangga bahkan ke elemen kepala desa.

Caranya mudah, pakai fungsi magick $dispatch() AlpineJS. “$dispatch is a helpful shortcut for dispatching browser events,” begitu yang tertulis di laman dokumentasi AlpineJS.dev.

Berikut cara penggunaannya.

<!-- Parent child element -->
<div x-data>

  <button  @click="$dispatch('open-neighbor-element')">Click Message</button>

</div>
<!-- ./Parent child element -->

<!-- Parent child neighbor element -->
<div x-data="{ open: false }"  x-show="open" @open-neighbor-element.window="open = !open">

  <p>
    I have received a message from your father. 
  </p>

</div>
<!-- ./Parent child neighbor element -->

Live Demo

Penjelasan kode:

  • Baris kode @click="$dispatch('open-neighbor-element')" berfungsi untuk mengikat nilai ke atribut HTML di luar parent.
  • Pada elemen div berikutnya, attribut @open-neighbor-element.window="open = !open" menjadi target tujuan interaksi.

Semoga bermanfaat.

Referensi:

Fauzan My avatar

Ditulis oleh Fauzan My

Saya terobsesi dengan seni desain yang elegan dan sederhana, baik yang melibatkan proses kreatif rumit maupun yang sederhana. Di sini, saya menggabungkan keduanya, desain dan coding: mencari best practice.

Tulisan lainnya Fauzan My

Illustrasi programmer perempuan.
Tidak Suka dengan salah satu Class TailwindCSS? Disable Saja
Optimasi SEO pada gambar.
Optimasi Gambar Responsif di WordPress
CSS position sticky.
Cara Membuat Header Tetap (Sticky/Fixed) Saat Di-scroll

Related Post