我正在尝试了解导入 rxjs 运算符的最佳实践
似乎我应该以这种方式导入 share
,但是,以下内容不起作用,因为它说 share 需要 0 个参数。我不太确定如何正确调用 share
。
import { share } from 'rxjs/operators';
...
public currentUser: Observable<User> = share(this.currentUser$.asObservable());
按照旧方法进行操作不会出现任何问题。然而我似乎读过这不是导入 https://www.learnrxjs.io/concepts/operator-imports.html 的首选方式
import 'rxjs/add/operator/share';
...
public currentUser: Observable<User> = this.currentUser$.asObservable().share();
如果我使用推荐的导入方式,我应该如何调用共享?
最佳答案
使用 share
就像 RxJS 5.5 以来的任何其他“pipable”运算符一样:
import { share } from 'rxjs/operators';
...
this.currentUser$.pipe(share());
有关可管道运算符的更多详细信息,请参阅:https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
但是请注意,从 rxjs/operators
导入会导入整个文件 https://github.com/ReactiveX/rxjs/blob/master/src/operators/index.ts .
这意味着如果您自己捆绑应用,它的大小可能会显着增加。
因此,您可能希望从每个运算符自己的文件中导入它,例如:
import { share } from 'rxjs/internal/operators/share';
...然后以同样的方式使用它。
这并不总是必要的。如果您使用的是 angular-cli 等预配置的构建系统,它会为您进行路径映射,因此您无需担心它并始终使用 rxjs/operators 。您可以阅读更多相关内容:
关于rxjs - 使用推荐的运算符导入调用 RxJS 共享时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48250322/