变化检测 - 强制不变性

优质
小牛编辑
114浏览
2023-12-01

因为在JavaScript原始类型,如 和 number 是不可变的,通过定义,我们应该只处理我们正在使用的对象。 在本例中为actor对象。

这里有一个例子,比较可变的array 类型和不可变的string类型:

然后在我们的中,我们导入库并使用它创建一个不可变的actor对象。

app/app.component.ts

因为当我们尝试改变actor时,我们总是得到一个新的对象,所以在我们的组件中有两个不同的方法没有意义。 我们删除了方法changeActorProperties和changeActorObject并创建了一个名为的新方法。

还必须对MovieComponent进行其他更改。 首先,我们需要将actor对象声明为不可变类型,并且在模板中,而不是尝试使用类似actor.firstName的语法直接访问对象属性,我们需要使用不可变的get方法。

使用这种模式,我们充分利用了“OnPush”变化检测策略,从而减少了Angular传播变化、获得模型、视图同步的工作量。 这提高了应用程序的性能。