我需要使用Map.setIn方法在某些时候创建列表。问题是,当我在路径中指定索引时,它不理解我正在使用List。以下示例不起作用:
let data = new Map().setIn(['person', 'products', 0, 'isAvailable'], true);
List.isList(data.getIn(['person', 'products'])) // Returns false because it is Map instance
那么,我怎么能告诉Immutable JS'产品'在我的情况下must
是列表而不是地图?我不能在我的情况下初始化Map,因为结构非常动态,路径可能会有所不同。
答案 0 :(得分:2)
您提供的上述语法是正确的,但前提是“person.products”已经是一个列表。 E.G。
// In this example, `products` won't be a list
(new Map()).setIn(['person', 'products', 1, 'isAvailable'], true)
// In this example, `products` will be a list
var initial = new Map({
person: {
name: '',
products: [{isAvailable: true}, {isAvailable: false}]
}
})
initial.setIn(['person', 'products', 1, 'isAvailable'], true)
这是我能找到的唯一解决方案。
您总是可以编写自己的setIn
函数来查找整数并将值设置为new List()