【发布时间】:2019-11-15 16:48:10
【问题描述】:
我在角度使用ngrx/store 和ngrx-store-freeze。我发现了一些我真的不明白的东西。
我有一个模型:
Book {
id: number;
name: string;
active: boolean;
}
在我的减速器中,我存储了书籍:
export interface State extends EntityState<Book> {
bookId: number;
}
当我从父组件的 store 中获取books 并将其异步传递给子组件时,无疑无法修改。
但是,当我深度克隆books时,它仍然无法修改。我试过lodash.cloneDeep(),JSON.parse(JSON.stringify()),无法修改。
有趣的是,当我使用Object.isFrozen() 测试每个变量是否来自ngrx/store 时,结果总是正确的。
有人知道吗?
【问题讨论】:
-
这不可能。如果您执行“const newBooks = JSON.parse(JSON.stringify(books))”,是否将对象传递到链中并不重要,您将能够修改 newBooks 对象而不会冻结,因为您正在使用不影响存储的新引用创建一个新对象。
-
@IvanMihaylov 是的,我明白这一点。但我确实尝试了各种方法从商店克隆值,它只是无法修改。我真的不知道为什么。
标签: angular freeze deep-copy ngrx-store