В этой статье на medium.com (13 февраля) о NGRX 5. они представляют конвейерные селекторы. Это напоминает мне о том, как я читал о конвейерных селекторах в rxjs, где они не могли быть оправданы только «своей чистой функцией, бро», но также тем, как функции можно было объявлять и повторно использовать в разных случаях без использования map каждый раз, чтобы затем вызывать letable функция.
Так что я могу согласиться, что это хорошо в rxjs, но зачем нам это в ngrx - для селекторов. В связанной статье показан следующий пример:
import { Store, select } from '@ngrx/store';
import { Observable } from 'rxjs/Observable';
interface AppState {
count: number;
}
@Component({
selector: 'my-app',
template: `
<button (click)="increment()">Increment</button>
<div>Current Count: {{ count$ | async }}</div>
<button (click)="decrement()">Decrement</button>
<button (click)="reset()">Reset Counter</button>
`
})
export class MyAppComponent {
count$: Observable<number>;
constructor(private store: Store<AppState>) {
this.count$ = store.pipe(select('count'));
}
}
Итак, теперь мы вызываем store.pipe(select(...));
вместо store.select(Selector);
— где выигрыш? почему я должен изменить свой код, чтобы использовать это поведение, или хотя бы начать использовать конвейерные селекторы?