角不纯管道-不应使用,但最好使用的最佳方案

不应使用角度不纯的管道,但是如果使用它,则可能会影响性能,因为它们会在任何组件更改检测周期执行。

能不能告诉我使用不纯管道是唯一的解决方案还是最好的解决方案?

zhuzhuxiangw 回答:角不纯管道-不应使用,但最好使用的最佳方案

如果管道的输出依赖于管道的输入参数之外的其他值,则为

例如当您使用漂亮的管道来打印日期时:

  • “ 2019-11-13”应显示为“今天”
  • “ 2019-11-12”应显示为“昨天”
  • “ 2019-11-11”应按原样显示。

...等等

管道取决于当前日期。因此,如果是23:59,又过了2分钟,所以又是第二天的00:01,则​​需要更新管道。相同的输入参数会产生其他输出

,

一种不纯的管道,会触发值或参数的更改,使用它的最佳示例是Google转换器,例如,它会触发用户输入并转换为指定的目标语言

,

如果我们看一下Angular自身不纯的内部管道,它们是:

  • JsonPipe
  • SlicePipe
  • KeyValuePipe

所有这些都是不纯净的,因为它们将某种对象类型作为输入参数,因此从纯管道进行的典型更改检测不会启动管道。说得通。

但是,最重要的是,其中至少有两个主要用于调试目的(JSONPipe,KeyValuePipe)和切片……好..我不是很喜欢它,但它至少是一个轻量级的管道。

进行不纯净的管道IMO的关键成分是

  • 超轻量功能。例如没有异步呼叫。没有HTTP调用。几乎没有什么繁重的动作(地狱,如果可能的话,一个衬里)。
  • 不在一页上多次使用(因此。如果您必须使用它,那么它就不会在所有地方使用)
  • 对其他管道没有副作用。因此,管道实际上应该只返回数据,而不要在其他任何地方使用(例如,不要将数据传递到其他地方,等等)。

文档:

本文链接:https://www.f2er.com/3111071.html

大家都在问