问题描述
我对 Javascript 不变性概念很陌生,我一直在理解类似 Redux 的库是如何工作的。我正在使用 Angular,但我认为这与概念而非框架更相关...
假设我有以下 Item
:
interface Item {
id: string;
foo: string[];
bar: number;
}
const item: Item = {
id: 'abc'
foo: ['value1','value2'],bar: 123
}
假设我必须管理这些 Item
的集合。我在考虑类似的事情:
interface ItemState {
[itemId: string]: { // key itemId is the `Item.id` property
id: string; // repeated?
foo: string[];
bar: number;
}
}
// example
const state: ItemState = {
abc: { id: 'abc',foo: ['value1',bar: 123 }
def: { id: 'def',foo: ['value3','value4'],bar: 321 }
...
}
现在的问题是:每个 Item
都可以添加/删除/更新,并且每个操作可能需要花费大量时间
由于某些 API 调用和/或大量计算而导致的时间量。出于这个原因,我需要一种方法来最大限度地减少更改次数,尤其是对于那些不受添加/删除/更新操作影响且不需要任何刷新/重新计算的Item
。
示例:在第一次运行时,id 为 abc
和 def
的项目将被提取和解析。好的。然后一个新的 Item
被添加到状态,但这将创建一个新的 ItemState
,它将触发一个新的获取和解析所有 Item
,即使 abc
和 def
完全相同(但由于新的 ItemState
而有一个新的引用)。删除或更新操作相同。
如何处理?我可以“部分”更新我的状态而保持全局对象引用不变吗?或者我应该以某种方式将我的 Item
拆分为不同的结构?
我对ngrx的经验很少,它可以解决这个问题吗?我之所以离开它,是因为有大量样板文件支持基于简单 rxjs 主题的更干净的解决方案,但我愿意接受任何解决方案!
希望这是有道理的...谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)