Rumah  >  Artikel  >  hujung hadapan web  >  Membersihkan mesej kilat secara automatik dalam Phoenix LiveView

Membersihkan mesej kilat secara automatik dalam Phoenix LiveView

Susan Sarandon
Susan Sarandonasal
2024-10-29 22:49:29502semak imbas

Automatically clearing flash messages in Phoenix LiveView

Phoenix LiveView ialah cara yang hebat dan elegan untuk mencipta apl web dengan timbunan mudah. Penjananya sangat berkebolehan dan boleh melakukan banyak perkara dengan arahan mudah, tetapi satu perkara yang selalu mengganggu saya ialah mesej kilat tidak hilang dengan sendirinya selepas beberapa saat.

Untuk menangani perkara ini, saya mencipta cangkuk mudah yang memudarkan mesej selepas 5 saat dan juga mengosongkan mesej kilat daripada sambungan saluran LiveView. Mari kita mendalaminya!

// app.js
let liveSocket = new LiveSocket("/live", Socket, {
  // ...
  hooks: {
    AutoClearFlash: {
      mounted() {
        let ignoredIDs = ["client-error", "server-error"];
        if (ignoredIDs.includes(this.el.id)) return;

        let hideElementAfter = 5000; // ms
        let clearFlashAfter = hideElementAfter + 500; // ms

        // first hide the element
        setTimeout(() => {
          this.el.style.opacity = 0;
        }, hideElementAfter);

        // then clear the flash
        setTimeout(() => {
          this.pushEvent("lv:clear-flash");
        }, clearFlashAfter);
      },
    },
  },
});
# core_components.ex
def flash(assigns) do
  # ...
  phx-hook="AutoClearFlash"
  {@rest}
  # ...
end

Memandangkan mesej "ralat-klien" dan "ralat-pelayan" memaparkan maklumat penting tentang status dan ketersambungan apl, saya lebih suka mengabaikannya.

Langkah pertama ialah menetapkan tamat masa untuk menukar kelegapan mesej kepada 0, menjadikan mesej hilang daripada UI. Gabungkan itu dengan kesan peralihan untuk pengalaman pengguna yang lebih elegan (dalam mesej kilat saya, saya menggunakan kelas Tailwind berikut: transition-opacity duration-300).

Kemudian kami menetapkan tamat masa lain, tetapi kali ini untuk menghantar acara ("lv:clear-flash") ke pelayan untuk mengosongkan mesej kilat. Ia dicetuskan beberapa milisaat selepas tamat masa menyembunyikan mesej untuk memberikan kesan peralihan masa yang cukup untuk diselesaikan.

Dan itu sahaja!

Atas ialah kandungan terperinci Membersihkan mesej kilat secara automatik dalam Phoenix LiveView. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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