Heim >Web-Frontend >js-Tutorial >Benutzerdefinierte Veranstaltungen im Browser: Ein praktisches Tool, das Sie nicht wissen, dass Sie benötigt werden
Vor kurzem habe ich die Kraft von benutzerdefinierten Browser -Events entdeckt - ein überraschend praktisches Tool, das ich zuvor nicht erforscht hatte. Sie können Ihre eigenen benutzerdefinierten Ereignisse erstellen und auslösen und dann in Ihrer Anwendung auf sie hören. Dies eröffnet effiziente Kommunikationsmöglichkeiten.
veranschaulichen wir mit einem realen Beispiel. Ich entwickelte eine Chromverlängerung mit React mit mehreren Modulen und unabhängigen Logik, einigen externen React -Komponenten (in eigenständigen Typenkriptdateien). Ich brauchte eine robuste Kommunikationsmethode zwischen Modul.
Während die Einzelheiten der Erweiterung vertraulich sind, stellen Sie sich einen Service für Autohersteller (Toyota, Ford, Mercedes) vor. Jedes erfordert eindeutiges Handling, was zu separaten Logikdateien führt - nicht zu reagieren Komponenten. Standard -React -Tools wie useState
, Kontext oder Redux/MOBX waren nicht direkt anwendbar.
benutzerdefinierte Ereignisse lieferten die Lösung.
Benutzerdefinierte Ereignisse können Sie Ereignisse erstellen, versenden und anhören und benutzerdefinierte Daten übergeben. Die Kernsyntax ist einfach:
Hinzufügen eines Hörers:
<code class="language-javascript">window.addEventListener(type, listener);</code>
type
: Eine Fall-sensitive Zeichenfolge (der Ereignisname). listener
: Die Funktion, die beim Versand des Ereignisses ausgeführt wird. Ein optionales options
Objekt kann hinzugefügt werden (Einzelheiten siehe Dokumentation). ein Ereignis entsenden:
<code class="language-javascript">const event = new CustomEvent(eventName, { detail }); window.dispatchEvent(event);</code>
eventName
: Der Ereignisname (muss mit dem type
in addEventListener
). detail
in meiner Chromverlängerung:
<code class="language-javascript">useEffect(() => { const handleCustomEvent = (event: CustomEvent) => { console.log(event.detail); }; window.addEventListener(ADD_CUSTOM_EVENT, handleCustomEvent); return () => { window.removeEventListener(ADD_CUSTOM_EVENT, handleCustomEvent); }; }, []);</code>
<code>* `ADD_CUSTOM_EVENT`: A constant (prevents typos). * `handleCustomEvent`: Logs the event's `detail` object (in this simplified example).</code>
<code class="language-javascript">const event = new CustomEvent('ADD_CUSTOM_EVENT', { detail: { key: 'exampleKey', value: 'exampleValue' } }); window.dispatchEvent(event);</code>
benutzerdefinierte Ereignisse lieferten eine saubere, effiziente Lösung für die Cross-Modul-Kommunikation in meiner Erweiterung. Es umgangen die Notwendigkeit von Reakt-spezifischen Mechanismen wie Kontext- oder Staatsmanagementbibliotheken und bietet einen einfachen, eleganten Ansatz für komplexe Kommunikationsprobleme in Webanwendungen. Ich hoffe das erweist sich für andere hilfreich!
Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Veranstaltungen im Browser: Ein praktisches Tool, das Sie nicht wissen, dass Sie benötigt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!