首页 > 解决方案 > store.select 进入 constrcutor 和 Angular 6 之前的区别?

问题描述

在构造函数中选择 store 和之前有什么区别吗?

1) export class SomeClass {
      myObservable$ = <Observable<MyObservableType>>this.store.select(fromReducers.getMyObservable);
      constructor(
        private store: Store<fromReducers.State>
      ) { }
    } 

2) export class SomeClass {
      myObservable$ = Observable<MyObservableType>;
      constructor(
        private store: Store<fromReducers.State>
      ) {
        this.myObservable$ = this.store.select(fromReducers.getMyObservable);
      }
    }

为什么在 ngrx/store应用程序示例中他们使用第二个变体?

标签: javascriptangular6ngrx-store

解决方案


不同之处在于,在第一种情况下,它在类实例化期间请求数据,存在减慢所有 Web 应用程序初始化过程的风险,并存在破坏用户体验的风险。

长操作不应进入构造函数或变量声明。

最好的选择是将数据提取到ngOnInit方法中。所有潜在的长时间操作都是一样的。

查看角度生命周期文档,以最深入地了解幕后发生的事情

在声明点初始化变量是一种很好的做法,但并不强制使用实际值初始化它们。通常,它们被初始化为 null,然后它们在构造函数中或构造函数之后获取它们的值,因为通过这种方式,您应该确保您可以依赖的所有其他变量都应该被实例化。

但这不是一个规则,这取决于你的班级做什么


推荐阅读