Ich versuche, Flux und Reactjs zu verstehen.ReactJS + Flux - Wie Toasts/Benachrichtigungen implementieren?
Betrachten Sie ein folgendes, sehr einfaches Szenario:
Sie ein Formular mit wenigen Eingaben haben. Wenn Benutzer Formular sendet,
ActionCreator.publishAnnouncement(this.state.announcement);
wird innerhalb meiner Formularkomponente aufgerufen. Dies ist, wie die publishAnnouncement Methode wie folgt aussieht:
var publishAnnouncement = function (announcement) {
AnnouncementAPI.publishAnnouncement(
announcement,
successCallback,
failureCallback
)
};
AnnouncementAPI auf einen AJAX http POST Aufruf nur ein Wrapper ist. Es dauert zwei Rückrufe - auf Erfolg und auf Misserfolg.
Und jetzt: Ich muss eine Benachrichtigung/Toast auf dem Bildschirm anzeigen - zeigt Erfolg oder Misserfolg. Wie würden Sie das auf Flux-Art machen?
Ich habe darüber nachgedacht, Benachrichtigungskomponente zu erstellen und es in meinem Formular zu rendern. wie folgt aus:
<Notification title={this.state.notification.title} message={this.state.notification.title} visible={this.state.notification.visibility} // ?? onTimeExceeded ?? />
Aber wie gehe ich diese Rückrufe? Soll ich NotificationStore erstellen, der auf ANNOUNCEMENT_PUBLISHING_SUCCEEDED- und ANNOUNCEMENT_PUBLISHING_FAILED-Ereignisse wartet? Als Reaktion auf diese Ereignisse gibt das Geschäft CHANGE-Ereignis und damit meine Benachrichtigungs-Updates aus.
Aber selbst wenn ich das tue, wie soll ich meine Benachrichtigung anweisen, ein-/auszublenden? Oder schlimmer, nach 2 Sekunden zu zeigen und zu verstecken?
Ich habe einige Komponenten auf GitHub gesehen und jeder von ihnen verwendet Refs etc, die ich persönlich nicht mag.
Zusammenfassend: Wie würden Sie dies implementieren? Oder gibt es ein solches Projekt? Wenn ja, wo finde ich es?
Facebook selbst sprechen über das Implementieren von Benachrichtigungen (Benutzermeldungen) in Facebook mit React und Flux in ihrem Flux-Architektur-Startvideo. –
'refs' sind die empfohlene Art, dies zu implementieren. Entschuldigung, deine Persönlichkeit muss sich ändern ;-) – Eric
Aber sollte die be-Funktion nicht einen Zustand deiner Komponente zu einem bestimmten Zeitpunkt beschreiben? Wenn dies der Fall ist, bricht die Verwendung einer solchen Komponente mit Refs sie vollständig. – slnowak