Ist es in Ordnung, Aktionen zu haben, die nichts im Redux-Statusbaum bewirken?Redux - Ist es in Ordnung, Aktionen zu haben, die den Zustand nicht beeinflussen
z.B.
Eine asynchronen Anforderung des antwortet nur mit einem HTTP-Code 200 oder 404 ...
Ist es in Ordnung, Aktionen zu haben, die nichts im Redux-Statusbaum bewirken?Redux - Ist es in Ordnung, Aktionen zu haben, die den Zustand nicht beeinflussen
z.B.
Eine asynchronen Anforderung des antwortet nur mit einem HTTP-Code 200 oder 404 ...
Ja. Es ist völlig in Ordnung.
Wenn Ihr Geschäft gut geschrieben ist, wird es ziemlich einfach eine Kopie des Wertes zurückgeben, den es vorher hatte.
Das heißt, es ist ziemlich nutzlos, ein Ereignis zu feuern, das absolut nichts tut.
Der Grund, warum Redux-Tutorials das Trennen von Aktionen, Aktionserstellern und Personen, die die Aktionsersteller mit Aktionen aufrufen, andeutet, ist genau so, dass Sie entscheiden können, was an den Store gesendet wird; Es gibt kein "Klicken Sie hier für eine 50/50 Chance, wir werden den Laden zu aktualisieren", weil es nicht mehr ein Teil der Funktionsmethode ist.
Wow okay! Also muss ich es nicht versenden! Groß ! – AndrewMcLagan
Redux dient dazu, den Status zu speichern, den Status zu verwalten und die Ansicht basierend auf einer Statusänderung zu aktualisieren. Wenn sich kein Status geändert hat und Ihre Seite sich um das Ergebnis kümmert und der Benutzer sich keine Gedanken über neue Ansichten macht, die auf dem Ergebnis basieren, liegt kein Grund vor, diese zu versenden. – Norguard
Was es reagiert zu tun? Aktionen dienen nur dazu, den Redux-Status zu setzen, wenn Sie keinen Status setzen müssen, warum rufen Sie eine Aktion auf? Führen Sie in diesem Fall einfach das aus, was Sie direkt in Ihrer Komponente tun müssen.
Ja war auch mein Denken. Obwohl ich mich auf API-Aufrufe an meinen Anwendungsserver beziehen. (AJAX). – AndrewMcLagan
Die Frage ist, was machst du mit der Antwort? Speichern Sie es in den Status? Etwas aufführen und dann das Ergebnis wegwerfen? Es muss das eine oder andere sein. Wenn es das erstere ist, dann speichern Sie es in den Redux-Zustand, wenn es das spätere ist, dann verwenden Sie es in Ihrer Komponente und werfen Sie es weg. – ha404
es ist der spätere .. – AndrewMcLagan
Ich würde sagen "Ja, es ist in Ordnung" - obwohl das meiner Meinung nach ist.
Es hält Sie offen, um Ihre Anwendung weiter zu erweitern. Zum Beispiel, Sie so etwas wie haben könnte:
export function fetch(sysId:string) {
return function(dispatch:Function) {
dispatch(fetching());
$.ajax(...)
.fail(e => dispatch(failed()))
.done(data => dispatch(fetched(data)));
}
}
export function failed() {
return { type: 'SERVER/FAILED' };
}
export function fetching() {
return { type: 'SERVER/FETCHING' };
}
export function fetched(data:Object) {
return { type: 'SERVER/FETCHED', data };
}
Derzeit können Sie Null Absicht haben, etwas in Ihrer Reduzierung für die failed
oder fetching
Aktionen ausführen.
Dann erkennen Sie, dass Sie einen animierten Loader benötigen, um anzuzeigen. Einfach, weil Sie diese Aktionen an Ort und Stelle haben. Offensichtlich gibt es das Argument nicht fügen Sie alles hinzu, was Sie nicht brauchen, aber ich denke, für gewöhnliche Stücke wie diese ist es wenig Overhead.
Genau meine meinung dazu! Freut mich zu hören, jemand anderes stimmt zu – AndrewMcLagan
Ich weiß was du meinst. Ich denke/rechtfertige es, weil die Aktion den Zustand Ihrer Anwendung beeinflusst, auch wenn Ihre Reduzierer nicht darauf reagieren – Chris
Ereignis 200, 404 ist eine Statusänderung (Fehlerbehandlung) –