不可变js修改所有嵌套记录
immutable js modify ALL nested records
我正在尝试修改 OrderedMap 的所有记录的 'completed' 属性。这是 OrderedMap:
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 上运行,现在是匿名的?
是否还有其他 'better' 修改所有嵌套元素属性的可能性?
有 -
state = state.map((todoItem)=>todoItem.set("completed", true));
我正在尝试修改 OrderedMap 的所有记录的 'completed' 属性。这是 OrderedMap:
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 上运行,现在是匿名的?
是否还有其他 'better' 修改所有嵌套元素属性的可能性?
有 -
state = state.map((todoItem)=>todoItem.set("completed", true));