Я бы посоветовал вам взглянуть на несколько ресурсов о компонентах Smart и Dumb. При использовании менеджера состояний у вас есть возможность очень хорошо применять эту архитектуру. Взгляните на одну из хороших статей Smart Components vs Presentational Components . В Angular люди называют их контейнерами против компонентов.
Для быстрого ознакомления, Разделяйте компоненты между уровнем представления и уровнем домена.
Компоненты домена уровня называются контейнерами , которые могут иметь доступ к менеджеру состояния. Они контролируют, как государство управляется. Контейнеры передают необходимые данные компонентам представления, и с помощью источников событий, поступающих от них, контейнеры изменяют состояние домена.
Уровень представления их просто называют компонентами , они тупые, у них нет доступа к диспетчеру состояний. Все, что они могут иметь, - это получать данные из контейнеров или других компонентов с помощью Input. Вывод помогает передавать события в контейнеры, чтобы контейнер мог изменять состояние. Также у немых компонентов может быть свое собственное частное состояние, которое помогает поддерживать правильное состояние пользовательского интерфейса.