Heim > Web-Frontend > js-Tutorial > Automatisches Löschen von Flash-Meldungen in Phoenix LiveView

Automatisches Löschen von Flash-Meldungen in Phoenix LiveView

Susan Sarandon
Freigeben: 2024-10-29 22:49:29
Original
587 Leute haben es durchsucht

Automatically clearing flash messages in Phoenix LiveView

Phoenix LiveView ist eine fantastische und elegante Möglichkeit, Web-Apps mit einem einfachen Stack zu erstellen. Seine Generatoren sind super leistungsfähig und können mit einfachen Befehlen viel erledigen, aber eine Sache, die mich immer gestört hat, ist, dass Flash-Nachrichten nicht nach ein paar Sekunden von selbst verschwinden.

Um dieses Problem zu beheben, habe ich einen einfachen Hook erstellt, der die Nachricht nach 5 Sekunden ausblendet und außerdem die Flash-Nachricht aus der LiveView-Kanalverbindung löscht. Lasst uns eintauchen!

// 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);
      },
    },
  },
});
Nach dem Login kopieren
# core_components.ex
def flash(assigns) do
  # ...
  phx-hook="AutoClearFlash"
  {@rest}
  # ...
end
Nach dem Login kopieren

Da die Meldungen „Client-Fehler“ und „Server-Fehler“ wichtige Informationen über den Status und die Konnektivität der App anzeigen, ignoriere ich sie lieber.

Der erste Schritt besteht darin, ein Zeitlimit festzulegen, um die Deckkraft der Nachricht auf 0 zu ändern, sodass die Nachricht von der Benutzeroberfläche verschwindet. Kombinieren Sie dies mit Übergangseffekten für ein eleganteres Benutzererlebnis (in meinen Flash-Nachrichten verwende ich die folgenden Tailwind-Klassen: Transition-Opacity-Dauer-300).

Dann legen wir ein weiteres Timeout fest, dieses Mal jedoch, um ein Ereignis („lv:clear-flash“) an den Server zu senden, um die Flash-Nachricht zu löschen. Es wird einige Millisekunden nach dem Timeout zum Ausblenden der Nachricht ausgelöst, um dem Übergangseffekt genügend Zeit zum Abschluss zu geben.

Und das ist es!

Das obige ist der detaillierte Inhalt vonAutomatisches Löschen von Flash-Meldungen in Phoenix LiveView. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage