2016-04-29 8 views

Antwort

3

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.

+0

Wow okay! Also muss ich es nicht versenden! Groß ! – AndrewMcLagan

+0

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

0

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.

+0

Ja war auch mein Denken. Obwohl ich mich auf API-Aufrufe an meinen Anwendungsserver beziehen. (AJAX). – AndrewMcLagan

+0

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

+0

es ist der spätere .. – AndrewMcLagan

1

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.

+0

Genau meine meinung dazu! Freut mich zu hören, jemand anderes stimmt zu – AndrewMcLagan

+0

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