Я надам аргумент на користь "німих" дій.
Покладаючи відповідальність за збір даних перегляду у своїх діях, ви приєднуєте свої дії до вимог даних щодо ваших поглядів.
На відміну від цього, загальні дії, які декларативно описують наміри користувача або певний перехід стану у вашій програмі, дозволяють будь-якому Магазину, який реагує на цю дію, перетворити намір у стан, призначений спеціально для переглянутих на нього переглядів.
Це піддається більш численним, але меншим, більш спеціалізованим магазинам. Я аргументую цей стиль тому, що
- це дає вам більше гнучкості в тому, як представлення споживають дані магазину
- "розумні" магазини, спеціалізовані для представлень, які споживають їх, будуть меншими та менш зв'язаними для складних додатків, ніж "розумні" дії, від яких залежить багато переглядів
Метою магазину є надання даних переглядам. Назва "Дія" підказує мені, що її мета - описати зміну моєї Заявки.
Припустимо, вам потрібно додати віджет до наявного подання на панелі інформаційних панелей, який показує нові фантастичні нові сукупні дані, які ваша команда бекенда щойно розгорнула.
За допомогою "розумних" дій вам може знадобитися змінити дію "оновити інформаційну панель", щоб використовувати новий API. Однак "Оновлення інформаційної панелі" в абстрактному сенсі не змінилося. Вимоги до даних ваших поглядів - це те, що змінилося.
За допомогою "тупих" дій ви можете додати новий магазин, щоб новий віджет споживав, і налаштувати його так, що коли він отримає тип дії "оновити інформаційну панель", він надсилає запит на нові дані та відкриває їх новий віджет, коли він буде готовий. Для мене є сенс, що коли шару перегляду потрібні більші чи інші дані, те, що я змінюю, є джерелами цих даних: Магазини.