Wie Sie mehrere event-Handler für dasselbe Ereignis in der React.js
Alle:
Frage ich mich, ob es möglich ist, dass die Bindung mehrerer event-Handler für dasselbe Ereignis?
Beispiel:
var LikeToggleButton = React.createClass({
render: function(){
(function toggle(){
this.setState({liked:!like});
}).bind(this);
return (
<div onClick={toggle}>TOGGLE LIKE</div>
);
}
});
Bis zu diesem Punkt scheint alles normal, aber ich möchte hinzufügen eine weitere Funktion, die der Taste, die Sie entscheiden, eine andere option:
Ich habe zum Beispiel einen anderen Schalter Komponente(könnte so etwas wie checkbox oder radio-button etc.) als "Graf toggle", die, wenn aktiviert, die LikeToggleButton ' s Taste Hinzugefügt werden, eine andere onClick-handler, die anfangen zu zählen Zeiten der button geklickt wurde, ich weiß, es könnte sein, predesignd in der toggle-Funktion, aber ich Frage mich nur, wenn es einen Weg gibt, zum Anhängen dieses Teil zu onClick-handler?
Dank
- Möglich, Duplikat der Mehrere event-Handler für dasselbe Ereignis und element mit Reactjs
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um mehrere callbacks ausgeführt, wenn onClick ausgelöst wird, können Sie Ihnen übergeben von außen, so dass Sie Zugang zu Ihnen haben, in der Requisiten-Objekt. Dann führen Sie alle (Hinweis: code nicht getestet):
ABER, wenn Sie wollen, um die Komponenten miteinander verbunden sind, die Sie nicht tun sollten, dass durch das aufrufen von Methoden innerhalb Handler. Stattdessen sollten Sie die Verwendung eines Entwurfsmusters, wo Flux ist die offensichtliche Wahl, (aber es gibt noch viel mehr).
Werfen Sie einen Blick auf Flux, und hier haben Sie mehr Auswahl.
callbacks
array so, dass nicht die Materie.Für eine erweiterbare Art und Weise, die macht es nicht erforderlich, die Komponente wissen über Komponenten, die Sie verwenden - speichern Sie das onClick-Ereignis, bevor Sie es ändern.
Dies ist highlights extrahiert aus der tatsächlichen Arbeitszeit-code:
Taste.jsx
Dann in einer anderen Komponente Sie können die Schaltfläche verwenden, und es kann über einen eigenen onClick-handler:
add-multiple-event-Handler-zu-gleiche-event-in-reagieren
Vielleicht Sie die Einstellung multi-click-Handler auf das gleiche Ziel!
https://gist.github.com/xgqfrms-GitHub/a36b56ac3c0b4a7fe948f2defccf95ea#gistcomment-2136607
Gruppe mehrere Aktionen für ein Ereignis