В настоящее время мы проводим рефакторинг приложения Angular в моей команде и внедряем библиотеку NGRX (Store, Effects ...).Мы немного знакомы с шаблоном Redux и у нас есть много повторно используемых компонентов.
Например, у нас есть основной модуль для Projects
, который содержит компонент контейнера, а затем он показывает только список проектов ипанель множественного выбора внизу.В этом компоненте вы можете Delete
, Download
и выполнять еще 3 или 4 действия с каждым проектом в списке.Кроме того, вы можете выбрать 2 или более проектов и выполнять те же действия, что и массовые операции.
Проблема, с которой я столкнулся, заключается в том, что до того, как мы начали рефакторинг приложения, мы используем этот компонент еще в двух основных модулях смаленькая разницаВ основном модуле Projects
мы отображаем все проекты, в другом модуле мы повторно используем тот же компонент для отображения всех проектов, отфильтрованных по parent id
, а в другом модуле мы используем тот же компонент для отображения всех проектов, отфильтрованных по ancestor id
.
Во всех этих компонентах состояние будет одинаковым (список projects
и список selected projects
).Действия, которые вы можете выполнять с проектами, также одинаковы.
Итак, на данный момент, как лучше всего справиться с возможностью повторного использования этих компонентов?Я подумал о повторном использовании интерфейса Store из основного модуля, а затем переписать все эффекты и редуктор ... Но если мне нужно будет внести изменения в любой из Effects
или Reducer
, мне придетсяредактировать три файла каждый раз ... Какой самый лучший подход здесь?Спасибо!