gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:26:40 25 4
gpt4 key购买 nike

我几乎可以肯定我应该这样做,但我还没有在 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(){
// ...
}
}

所以我想知道我是否应该始终取消订阅商店,如果我不这样做会发生什么。

最佳答案

是的,您应该销毁(unsubscribe) 应用程序中不使用的所有可观察对象。我不知道 Redux store,但我觉得你仍然应该在 onDestroy 中杀死你的 observable。

如果您不取消订阅 () 会怎样?

第一次加载组件时,ngOnInit() 将订阅 store,现在如果您返回某个其他组件并重新访问同一组件,您将有新的 subscription 以及之前的订阅(所以 2 个订阅)。此订阅 计数会随着您重新访问该组件的次数而增加,这会降低应用程序的性能。为了更安全,您应该在创建新订阅之前终止之前的 subscription,这通常在 ngOnDestroy() 中完成。

关于angular - 是否有必要取消订阅 Angular 组件中的 Redux 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com