2017-06-02 1 views
3

Ich bin mir fast sicher, dass ich sollte, aber ich habe keine spezifischen Informationen über die Redux-Dokumentation gefunden. Mein Muster in den meisten meiner Angular Komponenten ist, dass i abonnieren/abbestellen einem Redux-Shop wie:Muss ich mich von einem Redux-Geschäft in einer Angular-Komponente abmelden

import { Component, OnInit } from '@angular/core'; 

@Component({ 
    moduleId: module.id, 
    selector: 'selector', 
    templateUrl: 'name.component.html' 
}) 
export class ComponentNameComponent implements OnInit { 
    private unsubscribe : Function; 

    constructor(@Inject(AppStore) private store: Store<AppState>) {} 

    ngOnInit() { 
     this.unsubscribe = this.store.subscribe (()=>{ this.updateFromState(); }); 
    } 
    // Is unsubscribing onDestroy necessary? 
    ngOnDestroy(){ 
     this.unsubscribe(); 
    } 

    this.updateFromState(){ 
     // ... 
    } 
} 

So würde Ich mag wissen, ob ich immer aus dem Shop austragen sollte, und dem, was passieren würde, wenn ich didn t.

Antwort

3

Ja, Sie sollten (unsubscribe) alle Observablen innerhalb Ihrer Anwendung zerstören, wenn sie nicht verwendet werden. Ich habe keine Ahnung von Redux store, aber ich finde, Sie sollten Ihre Observables immer noch in onDestroy töten.

Was passiert, wenn Sie sich nicht abmelden()?

Zum ersten Mal, wenn Sie Ihre Komponente ngOnInit() geladen wird store abonnieren und jetzt wieder, wenn Sie auf eine andere Komponente zurückgehen und dann die gleiche Komponente erneut, werden Sie neue subscription haben zusammen mit vorherigen (so 2 ​​Abonnements). Diese subscription Zählung erhöht sich so oft, wie Sie die Komponente erneut besuchen, wodurch die Leistung Ihrer Anwendung reduziert wird. So sicher Seite sollten Sie die vorherige subscription töten, bevor Sie eine neue erstellen, die in der Regel in ngOnDestroy() getan wird.

+0

Das Redux-Abonnement gibt eine Funktion zurück, und "Function" ist ein Typescript-Typ. Nicht das gleiche wie RxJS Observable/Subscription [Redux Abonnieren] (http://redux.js.org/docs/api/Store.html#subscribe) – ktsangop

+0

Ja meine schlechte !. Danke, dass Sie das mitgeteilt haben. –

+1

Ihre Logik scheint korrekt zu sein, und ich nehme an, dass das Observable-Muster immer auf die gleiche Weise verwendet werden sollte, aber ich wollte nur einige harte Beweise, die ich nicht finden konnte. Ich werde Ihre Antwort akzeptieren, es sei denn, jemand findet eine spezifische Redux-Referenz. Vielen Dank! – ktsangop

Verwandte Themen