不可变的js修改所有嵌套的记录

immutable js modify ALL nested records

本文关键字:嵌套 记录 修改 js 不可变      更新时间:2023-09-26

我正在尝试修改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上运行,而obj现在是匿名的?

是否还有其他"更好"的可能性来修改所有嵌套元素的属性?

是的,有-

state = state.map((todoItem)=>todoItem.set("completed", true));