【发布时间】:2021-12-25 00:41:09
【问题描述】:
假设我有带有用户界面的 BehaviorSubject:
interface User {
firstName: string;
lastName: string;
}
let user: User = {
firstName: 'Cuong',
lastName: 'Le',
};
let bs = new BehaviorSubject<User>(user);
有两个订阅,sub1 试图更改名字。 Sub2 稍后订阅,并且用户对象的名字也更改了,因为 sub1 之前确实更改了它:
let sub1 = bs.subscribe((u) => {
u.firstName = 'An';
console.log(u);
});
let sub2 = bs.subscribe((u) => {
console.log(u);
});
当这种情况发生在大型 Angular 应用程序中时,很难调试。订阅时我们如何使值不可变?
我正在寻找深度不可变的解决方案,以防止其他地方的代码更改数据而不是影子
【问题讨论】:
-
这让我很惊讶——但确实有可能。更多信息:levelup.gitconnected.com/…
标签: javascript angular typescript rxjs