Przedstawię argument za „głupimi” działaniami.
Umieszczając odpowiedzialność za gromadzenie danych widoków w Akcjach, łączysz swoje Akcje z wymaganiami dotyczącymi danych w Twoich widokach.
W przeciwieństwie do tego, Akcje ogólne, które deklaratywnie opisują intencję użytkownika lub zmianę stanu w aplikacji, umożliwiają dowolnemu Sklepowi, który reaguje na tę akcję, przekształcenie intencji w stan dostosowany specjalnie do subskrybowanych widoków.
To nadaje się do większej liczby, ale mniejszych, bardziej wyspecjalizowanych Sklepów. Opowiadam się za tym stylem, ponieważ
- Zapewnia to większą elastyczność w sposobie wykorzystania danych Sklepu przez widoki
- „inteligentne” sklepy, specjalizujące się w widokach, które je konsumują, będą mniejsze i mniej powiązane ze złożonymi aplikacjami niż „inteligentne” działania, od których zależy potencjalnie wiele widoków
Celem Sklepu jest udostępnianie danych do wyświetleń. Nazwa „Działanie” sugeruje mi, że jej celem jest opisanie zmiany w mojej Aplikacji.
Załóżmy, że musisz dodać widżet do istniejącego widoku pulpitu nawigacyjnego, który pokazuje nowe, fantazyjne dane zagregowane, które właśnie wprowadził zespół zaplecza.
W przypadku „inteligentnych” działań może być konieczna zmiana akcji „odśwież-panel informacyjny”, aby korzystać z nowego interfejsu API. Jednak „Odświeżanie dashboardu” w sensie abstrakcyjnym nie uległo zmianie. Zmieniły się wymagania dotyczące danych w Twoich widokach.
Za pomocą „głupich” akcji możesz dodać nowy Sklep do wykorzystania przez nowy widżet i skonfigurować go tak, aby po otrzymaniu typu działania „odśwież-dashboard” wysyłał żądanie nowych danych i pokazywał je nowy widget, gdy będzie gotowy. Wydaje mi się sensowne, że gdy warstwa widoku potrzebuje więcej lub innych danych, rzeczy, które zmieniam, są źródłami tych danych: Sklepy.