考虑以下示例:
const stickers =
new OrderedMap().set(1, {hero: "batman", name: "Bruce"});
stickers.getIn([1]); //=> { hero: 'batman', name: 'Bruce' }
stickers.getIn([1, "hero"]); //=> undefined
为什么第二次的结果
getIn
未定义?
ImmutableJS上的文档状态:
普通JavaScript对象或数组可以嵌套在不可变的对象中。js集合和getIn()也可以访问这些值
所以,如果
OrderedMap
是一个普通javascript对象或一个不可变集合-但是,如果我们首先将该普通对象转换为不可变集合,那么我们可以看到bug消失了:
const stickers =
new OrderedMap().set(1, fromJS({hero: "batman", name: "Bruce"}));
stickers.getIn([1]); //=> { hero: 'batman', name: 'Bruce' }
stickers.getIn([1, "hero"]); //=> 'batman'