Je vais fournir un argument en faveur des actions «stupides».
En plaçant la responsabilité de la collecte des données de vue dans vos actions, vous associez vos actions aux exigences de données de vos vues.
En revanche, les actions génériques, qui décrivent de manière déclarative l' intention de l'utilisateur, ou une transition d'état dans votre application, permettent à tout magasin qui répond à cette action de transformer l'intention, en un état spécialement conçu pour les vues qui y sont abonnées.
Cela se prête à des magasins plus nombreux, mais plus petits et plus spécialisés. Je défends ce style parce que
- cela vous donne plus de flexibilité dans la façon dont les vues consomment les données du Store
- Les stores "intelligents", spécialisés pour les vues qui les consomment, seront plus petits et moins couplés pour les applications complexes, que les actions "intelligentes", dont dépendent potentiellement de nombreuses vues
Le but d'un magasin est de fournir des données aux vues. Le nom «Action» me suggère que son but est de décrire un changement dans ma candidature.
Supposons que vous deviez ajouter un widget à une vue de tableau de bord existante, qui montre de nouvelles données agrégées sophistiquées que votre équipe backend vient de déployer.
Avec les actions «intelligentes», vous devrez peut-être modifier votre action «rafraîchir le tableau de bord» pour utiliser la nouvelle API. Cependant, «Actualiser le tableau de bord» dans un sens abstrait n'a pas changé. Les exigences de données de vos vues sont ce qui a changé.
Avec des actions "stupides", vous pouvez ajouter un nouveau magasin pour le nouveau widget à consommer, et le configurer de sorte que lorsqu'il reçoit le type d'action "refresh-dashboard", il envoie une demande pour les nouvelles données et les expose à le nouveau widget une fois qu'il est prêt. Il est logique pour moi que lorsque la couche de vue a besoin de plus de données ou de données différentes, les choses que je change sont les sources de ces données: les magasins.