Я хотел бы знать, возможно ли отфильтровать store.select подписку по действиям (как мы делаем в Effects). Смотрите код ниже:
this.store
.select(mySelector)
.subscribe(obj => { . //FILTER SUBSCRIPTION BY ACTION
this.object = obj;
});
Каждый раз , когда отправляется действие (не имеет значения, какое действие), будет вызываться каждый отдельный активный компонент (не уничтоженный и не отписанный), который имеет store.select.subscribe.
Если наше приложение имеет 100 действий, то при каждом запуске 1 действия будут вызываться все активные компоненты ( не уничтожены или не подписаны ) store.select.subscribe. (Если состояние, которое влияет на компонент, не изменилось, я знаю, что у нас не возникнет никаких проблем, так как состояние остается прежним).
Почему я задаю этот вопрос?
Иногда мне нужно выполнять какое-то действие в моем компоненте каждый раз, когда изменяется состояние, которое его затрагивает. Поэтому каждый раз, когда мне нужно сделать оператор if, чтобы проверить, изменился ли объект. Если у меня есть фильтр для действия, в этом операторе if больше не будет необходимости, поскольку я отфильтровал подписку для конкретных действий, которые влияют на мой компонент. Посмотрите код, который показывает это, если заявление ниже:
myObject: any; //global object of my component
constructor(
private store: Store<AppState>,
) {
this.store
.select(mySelector)
.subscribe(obj => {
if(obj.id !== myObject.id) //changed{
this.myObject = obj;
doSomeActionInMyComponent()
} else {
this.myObject = obj;
}
});
}
doSomeActionInMyComponent() {
//do some action using this.myObject
}
Имеет смысл моя мысль или я неправильно понял концепции ngrx? Должен ли я использовать что-то еще, как эффекты для этого?
Заранее спасибо.