suchen
HeimWeb-Frontendjs-TutorialReact-toastify v – endlich einfach anzupassen

Noch nie von React-Toastify gehört? Schauen Sie sich die Demo an

Was ist neu in v11?

Ich freue mich riesig über diese Veröffentlichung! Das Hauptaugenmerk lag auf der Anpassung, und mein Ziel war es, Sie (und mich selbst) zu befähigen, das Erscheinungsbild der Benachrichtigungen vollständig zu personalisieren.

Kurz gesagt, React-Toastify sollte sich in jedes Designsystem einfügen können.

React-toastify v- finally easy to customize

Die CSS-Datei muss nicht mehr importiert werden

Das Stylesheet wird jetzt automatisch eingefügt, sodass Sie es nicht mehr importieren müssen. Die CSS-Datei wird weiterhin von der Bibliothek exportiert.

  import { ToastContainer, toast } from 'react-toastify';

  function App(){
    const notify = () => toast("Wow so easy !");

    return (
      <div>
        <button onclick="{notify}">Notify !</button>
        <toastcontainer></toastcontainer>
      </div>
    );
  }

Einfache Anpassung!

Eine der häufigsten Anfragen war die Möglichkeit, Benachrichtigungen anzupassen. Fairerweise muss man sagen, dass es bis zu dieser Version eine ziemliche Herausforderung war, da Benutzer zahlreiche CSS-Klassen überschreiben mussten.

Ich habe die DOM-Struktur der Benachrichtigung vereinfacht, indem ich überflüssige div-Elemente, verschachtelte Elemente usw. entfernt habe. Es ist eine bedeutende bahnbrechende Änderung, aber die Mühe lohnt sich wirklich. Ich kann mit Sicherheit sagen, dass sich die Bibliothek jetzt nahtlos in jedes Designsystem integrieren lässt.

Im Folgenden habe ich ein paar verschiedene Designs nur mit Tailwind implementiert. Ich habe keine einzige CSS-Klasse von „react-toastify“ überschrieben ?!

React-toastify v- finally easy to customize

Gehen Sie zu Stackblitz, um den Code zu überprüfen.

Wie funktioniert es in der Praxis? Auf der linken Seite haben wir die alte DOM-Struktur im Vergleich zur neuen auf der rechten Seite.

React-toastify v- finally easy to customize

  • Toastify__toast-body und sein untergeordnetes Element sind jetzt vollständig verschwunden.
  • Der CloseButton verwendet jetzt eine absolute Position.

Dank dieser Änderungen werden Ihre Inhalte nicht beeinträchtigt.

Toastify__toast verfügt über einige sinnvolle Standardwerte (z. B. Randradius, Schatten usw.), die mithilfe von CSS oder durch Aktualisieren der zugehörigen CSS-Variablen angepasst werden können:

width: var(--toastify-toast-width);
min-height: var(--toastify-toast-min-height);
padding: var(--toastify-toast-padding);
border-radius: var(--toastify-toast-bd-radius);
box-shadow: var(--toastify-toast-shadow);
max-height: var(--toastify-toast-max-height);
font-family: var(--toastify-font-family);

Benutzerdefinierter Fortschrittsbalken

Das Zulassen eines benutzerdefinierten Fortschrittsbalkens stand überhaupt nicht auf meiner To-Do-Liste, als ich an dieser Version arbeitete. Aber als ich sah, wie einfach es jetzt ist, Benachrichtigungen anzupassen, konnte ich nicht widerstehen ?.

Das Beste daran ist, dass Sie keine Kompromisse bei Funktionen wie AutoClose, PauseOnHover, PauseOnFocusLoss oder sogar einem kontrollierten Fortschrittsbalken eingehen müssen – es funktioniert einfach reibungslos für Sie.

React-toastify v- finally easy to customize

Hier ist eine kleine Zusammenfassung.

function App() {
  const notify = () => {
    toast(CustomComponent, {
      autoClose: 8000,
      // removes the built-in progress bar
      customProgressBar: true
    });
  };

  return (
    <div>
      <button onclick="{notify}">notify</button>
      <toastcontainer></toastcontainer>
    </div>
  );
}

// isPaused is now available in your component
// it tells you when to pause the animation: pauseOnHover, pauseOnFocusLoss etc...
function CustomComponent({ isPaused, closeToast }: ToastContentProps) {
  return (
    <div>
      <span>Hello</span>
      <mycustomprogressbar ispaused="{isPaused}" onanimationend="{()"> closeToast()} />
    </mycustomprogressbar>
</div>
  );
}

Gehen Sie zu Stackblitz, um ein Live-Beispiel zu sehen.

Barrierefreiheit und Tastaturnavigation

ToastContainer und Toast akzeptieren eine ariaLabel-Requisite (endlich...). Dies ist für Screenreader und auch zum Testen sehr hilfreich.
In Cypress könnten Sie beispielsweise cy.findByRole("alert", {name: "the aria label you selected"}) ausführen.

  import { ToastContainer, toast } from 'react-toastify';

  function App(){
    const notify = () => toast("Wow so easy !");

    return (
      <div>
        <button onclick="{notify}">Notify !</button>
        <toastcontainer></toastcontainer>
      </div>
    );
  }

Wenn eine Benachrichtigung sichtbar ist und der Benutzer Alt t drückt, wird der Fokus auf die erste Benachrichtigung gerichtet, sodass der Benutzer mit der Tabulatortaste durch die verschiedenen Elemente innerhalb der Benachrichtigung navigieren kann.

Die HotKeys können natürlich geändert werden.

width: var(--toastify-toast-width);
min-height: var(--toastify-toast-min-height);
padding: var(--toastify-toast-padding);
border-radius: var(--toastify-toast-bd-radius);
box-shadow: var(--toastify-toast-shadow);
max-height: var(--toastify-toast-max-height);
font-family: var(--toastify-font-family);

Grund für das Entfernen der Benachrichtigung mit onClose-Rückruf

Möchten Sie wissen, ob der Benutzer die Benachrichtigung geschlossen hat oder ob sie automatisch geschlossen wurde? Seien Sie versichert, das ist jetzt möglich!

Die Signatur des onClose-Rückrufs lautet jetzt onClose(reason?: boolean | string) => ungültig.

Wenn der Benutzer die Benachrichtigung schließt, ist das Argument „Grund“ gleich „wahr“. Im folgenden Beispiel habe ich mein Argument
benannt RemoveByUser, um die Absicht deutlich zu machen.

function App() {
  const notify = () => {
    toast(CustomComponent, {
      autoClose: 8000,
      // removes the built-in progress bar
      customProgressBar: true
    });
  };

  return (
    <div>
      <button onclick="{notify}">notify</button>
      <toastcontainer></toastcontainer>
    </div>
  );
}

// isPaused is now available in your component
// it tells you when to pause the animation: pauseOnHover, pauseOnFocusLoss etc...
function CustomComponent({ isPaused, closeToast }: ToastContentProps) {
  return (
    <div>
      <span>Hello</span>
      <mycustomprogressbar ispaused="{isPaused}" onanimationend="{()"> closeToast()} />
    </mycustomprogressbar>
</div>
  );
}

Wenn Sie eine benutzerdefinierte Komponente für Ihre Benachrichtigung verwenden, möchten Sie möglicherweise mehr Kontrolle über den Grund, insbesondere wenn dieser Folgendes enthält:
mehrere Call-to-Actions.

toast("hello", {
  ariaLabel: "something"
})

? Breaking Changes

useToastContainer und useToast werden nicht mehr angezeigt

Diese Hooks sind unbrauchbar, es sei denn, Sie tauchen tief in den React-Toastify-Quellcode ein, um zu verstehen, wie man Dinge zusammenhält. Das ist nicht das, was ich für meine Benutzer möchte. Es war eine schlechte Entscheidung, sie überhaupt bloßzustellen. Ich habe eine gute Lektion gelernt.

onClose und onOpen erhalten keine Kinder-Requisiten mehr

Im Nachhinein hätte ich das nie tun sollen. Die Funktion wird praktisch nicht genutzt. Unten die neue Signatur für jeden Rückruf:

  • onOpen: () => ungültig
  • onClose: (Grund?: boolean | string) => ungültig

Styling

  • React-toastify/dist/ReactToastify.minimal.css wurde entfernt.
  • Scss ist jetzt nicht mehr im Bilde. Die Bibliothek verwendet gutes altes CSS.
  • bodyClassName und bodyStyle werden nicht mehr benötigt.
  • progressBarStyle, um die API-Oberfläche zu reduzieren. Sie bieten jetzt eine bessere Möglichkeit, alles anzupassen, ohne sich auf den Inline-Stil verlassen zu müssen.
  • injectStyle wurde entfernt. Diese Funktion wird nicht mehr benötigt.
  • Die CSS-Klasse Toastify__toast-body und ihr direktes untergeordnetes Element wurden entfernt. React-toastify v- finally easy to customize

? Fehlerbehebungen

  • Unterstützung für React19 #1177 #1185 hinzufügen
  • CloseButtonProps #1165 erneut exportieren
  • Reparieren Sie LatestOnTop diesmal wirklich #1176
  • Dieser hässliche Fehler wird nicht mehr ausgegeben: Eigenschaften von undefiniert können nicht festgelegt werden (Einstellung „Umschalten“) #1170
  • onClose-Rückruf wird nicht länger verzögert, bis die Exit-Animation #1179 abgeschlossen ist

?Was kommt als nächstes?

Ich schreibe nach und nach einen Teil der Dokumentation neu. Ich habe auf Stackblitz eine Sammlung erstellt, damit Sie alle Beispiele an einem Ort finden können. Ich werde im Laufe der Zeit weitere Beispiele hinzufügen.

React-toastify v- finally easy to customize

Das obige ist der detaillierte Inhalt vonReact-toastify v – endlich einfach anzupassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Ersetzen Sie Stringzeichen in JavaScriptErsetzen Sie Stringzeichen in JavaScriptMar 11, 2025 am 12:07 AM

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Benutzerdefinierte Google -Search -API -Setup -TutorialBenutzerdefinierte Google -Search -API -Setup -TutorialMar 04, 2025 am 01:06 AM

Dieses Tutorial zeigt Ihnen, wie Sie eine benutzerdefinierte Google -Such -API in Ihr Blog oder Ihre Website integrieren und ein raffinierteres Sucherlebnis bieten als Standard -WordPress -Themen -Suchfunktionen. Es ist überraschend einfach! Sie können die Suche auf y beschränken

Beispielfarben JSON -DateiBeispielfarben JSON -DateiMar 03, 2025 am 12:35 AM

Diese Artikelserie wurde Mitte 2017 mit aktuellen Informationen und neuen Beispielen umgeschrieben. In diesem JSON -Beispiel werden wir uns ansehen, wie wir einfache Werte in einer Datei mit JSON -Format speichern können. Mit der Notation des Schlüsselwertpaares können wir jede Art speichern

Erstellen Sie Ihre eigenen AJAX -WebanwendungenErstellen Sie Ihre eigenen AJAX -WebanwendungenMar 09, 2025 am 12:11 AM

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

8 atemberaubende JQuery -Seiten -Layout -Plugins8 atemberaubende JQuery -Seiten -Layout -PluginsMar 06, 2025 am 12:48 AM

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Was ist ' this ' in JavaScript?Was ist ' this ' in JavaScript?Mar 04, 2025 am 01:15 AM

Kernpunkte Dies in JavaScript bezieht sich normalerweise auf ein Objekt, das die Methode "besitzt", aber es hängt davon ab, wie die Funktion aufgerufen wird. Wenn es kein aktuelles Objekt gibt, bezieht sich dies auf das globale Objekt. In einem Webbrowser wird es durch Fenster dargestellt. Wenn Sie eine Funktion aufrufen, wird das globale Objekt beibehalten. Sie können den Kontext mithilfe von Methoden wie CALL (), Apply () und Bind () ändern. Diese Methoden rufen die Funktion mit dem angegebenen Wert und den Parametern auf. JavaScript ist eine hervorragende Programmiersprache. Vor ein paar Jahren war dieser Satz

Verbessern Sie Ihr JQuery -Wissen mit dem Quell BetrachterVerbessern Sie Ihr JQuery -Wissen mit dem Quell BetrachterMar 05, 2025 am 12:54 AM

JQuery ist ein großartiges JavaScript -Framework. Wie in jeder Bibliothek ist es jedoch manchmal notwendig, unter die Motorhaube zu gehen, um herauszufinden, was los ist. Vielleicht liegt es daran, dass Sie einen Fehler verfolgen oder nur neugierig darauf sind, wie JQuery eine bestimmte Benutzeroberfläche erreicht

10 Mobile Cheat Sheets für die mobile Entwicklung10 Mobile Cheat Sheets für die mobile EntwicklungMar 05, 2025 am 12:43 AM

Dieser Beitrag erstellt hilfreiche Cheat -Blätter, Referenzführer, schnelle Rezepte und Code -Snippets für die Entwicklung von Android-, Blackberry und iPhone -App. Kein Entwickler sollte ohne sie sein! Touch Gesten -Referenzhandbuch (PDF) Eine wertvolle Ressource für Desig

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung