有route.paramMap.subscribe的时候还有什么理由要用route.snapshot.paramMap吗?
Is there any reason to use route.snapshot.paramMap when there is route.paramMap.subscribe?
不知有没有理由使用
this.someProperty = this.route.snapshot.paramMap.get('someParam');
而不是
this.route.paramMap.subscribe((param) =>
{
this.someProperty = param.get('someParam');
});
queryParamMap也是如此。
在我关注的教程中(Deborah Kurata 在 Pluralsight 上)他们似乎默认使用快照,并且仅当您希望参数更改而路由保持不变时才订阅。但是应用程序往往会随着时间而改变。更改可能会导致参数更改而路由保持不变的情况。这种情况很容易被忽视。
那么使用订阅而不是快照应该是(或者是)最佳实践吗?
快照方式写起来更短,但还有其他好处吗?
我可能在这里征求意见,但我想知道是否有官方最佳实践。
提前致谢。
当使用 snapshot
时,您只获得一次值,仅此而已,如果用户更改 url 中的参数,或者使用带有另一个参数的导航到同一路线,则您不会获取新值(除非您每次需要时都在阅读它)
另外 snapshot
是 sync
(相对于订阅是异步的)
如果您 subscribe
每次更改值时都可以读取新值。
When you know for certain that a HeroDetailComponent instance will never be re-used, you can use snapshot.
(source: snapshot: the no-observable alternative angular doc )
在快照 paramMap 或可观察的 paramMap 之间进行选择取决于您应用的预期导航场景。只有在某些情况下,组件重用可以通过使用可观察的 paramMap 方式来实现。除此之外,可观察的paramMap(异步订阅)似乎没有带来任何好处。
所以只需阅读快照属性并处理变量,这里不需要处理一个可观察对象。只有在它带来好处时才使用 observables。 details
不知有没有理由使用
this.someProperty = this.route.snapshot.paramMap.get('someParam');
而不是
this.route.paramMap.subscribe((param) =>
{
this.someProperty = param.get('someParam');
});
queryParamMap也是如此。
在我关注的教程中(Deborah Kurata 在 Pluralsight 上)他们似乎默认使用快照,并且仅当您希望参数更改而路由保持不变时才订阅。但是应用程序往往会随着时间而改变。更改可能会导致参数更改而路由保持不变的情况。这种情况很容易被忽视。
那么使用订阅而不是快照应该是(或者是)最佳实践吗?
快照方式写起来更短,但还有其他好处吗?
我可能在这里征求意见,但我想知道是否有官方最佳实践。
提前致谢。
当使用 snapshot
时,您只获得一次值,仅此而已,如果用户更改 url 中的参数,或者使用带有另一个参数的导航到同一路线,则您不会获取新值(除非您每次需要时都在阅读它)
另外 snapshot
是 sync
(相对于订阅是异步的)
如果您 subscribe
每次更改值时都可以读取新值。
When you know for certain that a HeroDetailComponent instance will never be re-used, you can use snapshot.
(source: snapshot: the no-observable alternative angular doc )
在快照 paramMap 或可观察的 paramMap 之间进行选择取决于您应用的预期导航场景。只有在某些情况下,组件重用可以通过使用可观察的 paramMap 方式来实现。除此之外,可观察的paramMap(异步订阅)似乎没有带来任何好处。
所以只需阅读快照属性并处理变量,这里不需要处理一个可观察对象。只有在它带来好处时才使用 observables。 details