1
我试图修改OrderedMap的所有记录的'completed'属性。这是OrderedMap:immutable js修改所有嵌套记录
const TodoItem = Record({text: '', completed: false});
let state = OrderedMap({'0': new TodoItem({text: 'First Item'})});
我当前的代码是:
state.forEach((v,k) => {
state = state.updateIn([k.toString(),'completed'], completed => true);
});
return state;
这工作,但如何?
它是否工作,因为状态是不可变的,并且在第一次迭代之后,forEach在第一个状态obj上运行,它现在是匿名的?
是否有任何其他更好的可能性来修改所有嵌套元素的属性?
哪里是混乱呢? state.forEach通过OrderedMap进行迭代,在forEach调用期间分配,即如果您在forEach中更改状态(如add/remove Record)forEach将继续使用原始状态实例进行迭代。 – IL55
没有真正的混淆,我只是问自己,如果这是在性能方面最好的方式来为每个更新生成一个新的映射,以便对不可变结构进行更新。 – duke2