2016-07-31 14 views
5

Ich baue eine mobile App mit reagieren-native und redux, und ich meine Projektstruktur nach Merkmal, in dieser Weise zu organisieren:Redux teilen Aktionen zwischen den Komponenten

Component1/
--- Component1Actions. js
--- Component1Reducer.js
---...
Component2/
--- Component2Actions.js
--- Component2Reducer.js
---...

Meiner Meinung nach ist diese Art von Projektstruktur aus vielen Gründen erstaunlich, vor allem wegen ihrer großen Skalierbarkeit.
Das einzige Problem, auf das ich bisher gestoßen bin, ist, wenn 2 verschiedene Komponenten die gleichen Aktionen versenden müssen (z. B. eine einfache Textänderung in einem Textfeld).
Es wäre nicht sinnvoll, die gleiche Aktion in 2 verschiedenen Dateien neu zu schreiben, und ich weiß auch, dass das Importieren einer Aktion von einer eigenen Komponente in eine andere wirklich eine schlechte Übung ist.
Ich habe darüber nachgedacht, diese Art von "sharable" Aktionen in einem globalen Modul zu behalten und sie dann in die verschiedenen Komponenten zu importieren, aber ich bin mir nicht sicher, ob es eine gute Praxis ist.
Ich würde gerne den besten Weg kennen, um mit dieser Art von Situationen umzugehen.
Vielen Dank im Voraus.

+0

meiner Meinung nach, wenn Sie nicht denselben Zustand für verschiedene Komponenten gleichzeitig zeitraubend sind, können Sie die Aktionen wiederverwenden. Aber in Zukunft, wenn Sie beide Komponenten gleichzeitig und in derselben Benutzeroberfläche gerendert halten müssen, werden Sie gezwungen, einen anderen Aktionstyp für dasselbe zu erstellen. – anoop

+0

Warum können die Komponenten die Aktion, die den Versand ausführt, nicht importieren? Können Sie erklären, warum Sie es duplizieren müssen? –

+0

@WarrenMir weil, weil mein Projekt von Features organisiert ist, wenn ich eine Aktion in einem Modul der Komponenten schreibe, ist es eine sehr schlechte Übung, es in einem anderen Modul zu importieren. –

Antwort

4

Sie können denselben "ACTION_TYPE" in mehreren Reduzierern verwenden.

... Aktionen sind global angelegt. Sie sind nicht

Sie eine „LOGOUT“ -Aktion in allen Reduzierungen umgehen konnte werden gebunden an einen bestimmten Minderer (Dan Abramov) gemeint, die nur den Ausgangszustand zurückkehren würde .. und stellen Sie die Anwendung auf die Standardwerte

zum Beispiel ..

const postReducer = (state = initial, action) => { 
    swtich(action.type) { 
    ... 
    case "LOGOUT": 
    return initial 
    default: 
    return state 
    } 
} 
Verwandte Themen