Je commence à regarder ngrx Magasin et je vois la commodité d'utiliser l'angle async pipe. En même temps, je ne suis pas sûr de savoir si l'aide de l'angle async pipe massivement est un bon choix.
Je fais un exemple simple. Supposons que, dans le même modèle j'ai besoin de montrer les différents attributs d'un objet (par exemple, une Personne) qui est extrait à partir de la Boutique.
Un morceau de code de modèle pourrait être
<div>{{(person$ | async).name}}</div>
<div>{{(person$ | async).address}}</div>
<div>{{(person$ | async).age}}</div>
alors que le composant constructeur de la classe aurait
export class MyComponent {
person$: Observable<Person>;
constructor(
private store: Store<ApplicationState>
) {
this.person$ = this.store.select(stateToCurrentPersonSelector);
}
.....
.....
}
Autant je comprends ce code implique 3 abonnements (faites dans le modèle via le async pipe) de la même Observables (person$
).
Une autre solution serait de définir 1 propriété (person
) dans MyComponent et 1 abonnement (dans le constructeur) qui remplit la propriété, tels que
export class MyComponent {
person: Person;
constructor(
private store: Store<ApplicationState>
) {
this.store.select(stateToCurrentPersonSelector)
.subscribe(person => this.person = person);
}
.....
.....
}
bien que le modèle utilise la norme de la propriété de liaison (c'est à dire sans l'async pipe), tels que
<div>{{person.name}}</div>
<div>{{person.address}}</div>
<div>{{person.age}}</div>
Maintenant, la question
Quelle est la différence en termes de performances entre les 2 approches? Est l'utilisation massive de async pipe (c'est à dire une utilisation massive des abonnements) va affecter l'efficacité du code?