Ich werde ein Argument für "dumme" Aktionen vorbringen.
Indem Sie die Verantwortung für das Sammeln von Ansichtsdaten in Ihre Aktionen übernehmen, koppeln Sie Ihre Aktionen mit den Datenanforderungen Ihrer Ansichten.
Im Gegensatz dazu ermöglichen generische Aktionen, die die Absicht des Benutzers oder einen Statusübergang in Ihrer Anwendung deklarativ beschreiben , jedem Geschäft, das auf diese Aktion reagiert, die Absicht in einen Status umzuwandeln, der speziell auf die abonnierten Ansichten zugeschnitten ist.
Dies bietet sich für zahlreichere, aber kleinere, spezialisiertere Geschäfte an. Ich argumentiere für diesen Stil, weil
- Dies gibt Ihnen mehr Flexibilität bei der Verwendung von Speicherdaten durch Ansichten
- "intelligente" Speicher, die auf die Ansichten spezialisiert sind, die sie verwenden, sind für komplexe Apps kleiner und weniger gekoppelt als "intelligente" Aktionen, von denen möglicherweise viele Ansichten abhängen
Der Zweck eines Geschäfts besteht darin, Daten für Ansichten bereitzustellen. Der Name "Aktion" deutet darauf hin, dass der Zweck darin besteht, eine Änderung in meiner Anwendung zu beschreiben.
Angenommen, Sie müssen einer vorhandenen Dashboard-Ansicht ein Widget hinzufügen, das einige ausgefallene neue aggregierte Daten anzeigt, die Ihr Backend-Team gerade eingeführt hat.
Bei "intelligenten" Aktionen müssen Sie möglicherweise Ihre "Aktualisierungs-Dashboard" -Aktion ändern, um die neue API zu verwenden. "Das Dashboard aktualisieren" im abstrakten Sinne hat sich jedoch nicht geändert. Die Datenanforderungen Ihrer Ansichten haben sich geändert.
Mit "dummen" Aktionen können Sie einen neuen Speicher hinzufügen, den das neue Widget verwenden soll, und ihn so einrichten, dass er beim Empfang des Aktionstyps "Aktualisierungs-Dashboard" eine Anforderung für die neuen Daten sendet und diese verfügbar macht das neue Widget, sobald es fertig ist. Für mich ist es sinnvoll, dass, wenn die Ansichtsebene mehr oder andere Daten benötigt, die Dinge, die ich ändere, die Quellen dieser Daten sind: Speicher.