假设您有一个用于项目数组的
Signal
,并且您想要向该数组添加新值。有两种方法可以实现:
// A: using mutate to mutate it in place and invoking the push method
items$.mutate(items => items.push(newItem))
// B: using update to create a new item with the spread operator
items$.update(items => [...items, item])
这两种方法之间是否存在需要考虑的实际差异?或者这一切都归结于语义、个人偏好和性能?
我想到的一个实际区别是,使用 mutate 时不能使用 OnPush 策略。
1-变异+推送:
2-更新+传播:
使用 update + spread 是处理此类更新的更“Angular 方式”,因为它符合框架的不变性和变更检测实践。不可变的更新(如更新+传播)有助于确保应用程序的行为可预测,并且更改检测按预期工作。它们在具有许多状态更改的复杂应用程序中尤其重要,其中不变性可以帮助避免与对象引用相关的细微错误。