function showAlert(message) {
return {
type: SHOW_ALERT,
message
};
}
function hideAlert(message) {
return {
type: HIDE_ALERT,
};
}
function flashAlert(message) {
return (dispatch) => {
dispatch(showAlert(message));
setTimeout(() => {
dispatch(hideAlert());
}, 5000);
}
}
Sie werden für diese arbeiten redux-Thunk müssen. Sie können dann this.props.flashAlert('Oh noes!!!!')
mit der richtigen mapStateToProps
verwenden. Außerdem werden Reduzierstücke und Reaktionskomponenten benötigt.
Fading ist nicht unbedingt eine einfache Reaktion. Ich schlage vor, Sie speichern das für später.
Was die flashAlert
Funktion tut ist eine Funktion, die eine dispatch
Funktion zurücknimmt. Diese Funktion macht allerlei lustige Dinge aber noch nicht. Zuerst wird diese Funktion an redux versandt. Diese Verteilung würde normalerweise ausgelöst, weil Aktionen einfache Objekte sein müssen. Aber weil du Redux-Thunk verwendest, wird es gut gehen. Redux-Thunk ruft diese Funktion auf und übergibt ihr die dispatch
-Funktion von redux. Jetzt wird die Funktion endlich ausgeführt. Das erste, was es tut, ist eine Aktion zu versenden, die es unter showAlert()
ruft. Diesmal ist es ein Objekt mit einer type
Eigenschaft, was es zu einer richtigen Reduktion macht. Vermutlich wird redux diese Aktion an unseren Reducer weiterleiten, der den Status mit der neuen Nachricht aktualisieren wird, aber das wissen wir nicht genau, weil der Reducer aus dieser Antwort der Kürze halber weggelassen wurde. Wer weiß, welchen Code es enthält. Nachdem der Status geändert wurde, um die Nachricht irgendwie zu zeigen, machen wir eine setTimeout()
. Wenn dieser Rückruf erfolgt, versenden wir eine weitere Aktion, die wir erhalten, indem wir hideAlert()
unter Verwendung der gleichen dispatch
Funktion aufrufen, die wir vorher verwendeten. Wir haben es immer noch. Dies wird vermutlich die Nachricht aus dem Zustand entfernen.
Redux wird reagieren, um die entsprechenden Komponenten erneut zu rendern, wenn sich der Status ändert. Vermutlich wird eine dieser Komponenten die Nachricht anzeigen oder nicht anzeigen, wie es der Fall sein mag.
Es ist viel falsch damit. Zunächst einmal ist nicht klar, was Sie erreichen möchten. Außerdem weisen Sie 'data' zu und prüfen sofort, ob es truthy ist. Es ist immer so, seit du es gerade zugewiesen hast. Dann gibt "updateAlert" nichts zurück. Es sollte eine Aktion zurückgeben, oder wenn Sie Redux Thunk für etwas benötigen, sollte es eine Funktion zurückgeben. – DDS
Ich bemerke auch, dass Sie eine Callback-Funktion aufrufen, aber da Ihr gesamter Code synchron ist (Sie warten auf nichts), ist kein Rückruf erforderlich. – DDS
hey @ DDS, ich ging voran und aktualisierte die Frage mit meiner letzten Situation. Ich habe versucht, einen Callback von meiner React-Komponente zu starten, nachdem ich this.props.updateAlert aufgerufen habe, anstatt einen Callback in der Aktion zu initiieren. Ich denke, ich komme näher - hast du irgendwelche Ideen mit diesem aktualisierten Code? – Drew