微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有必要取消订阅Angular组件中的Redux存储

我几乎可以肯定我应该,但我没有找到有关Redux文档的任何具体信息.我的大多数Angular组件中的模式是我订阅/取消订阅Redux商店,如:

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(){
        // ...
    }
}

所以我想知道我是否应该总是取消订阅商店,如果我没有,会发生什么.

解决方法

是的,您应该在不使用时销毁(取消订阅)应用程序中的所有可观察对象.我不知道Redux商店,但我觉得你仍然应该在onDestroy中杀死你的observable.

如果您不取消订阅(),会发生什么?

第一次加载组件时,ngOnInit()将订阅存储,现在再次返回其他组件,然后重新访问相同的组件,您将获得新的订阅以及之前的订阅(因此有2个订阅).重新访问组件时,此订阅计数会增加许多倍,这会降低应用程序的性能.如此安全的一面,您应该在创建新订阅之前杀死之前的订阅,这通常在ngOnDestroy()中完成.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐