我必须修改系统以选择资产,以允许用户选择多个资产。目前,我们将一个资产ID添加到生产ID映射中,如下所示:
.setIn(['newRequest', 'productionAssets', action.productionId], action.assetId)
如何修改它以便我们创建一个新列表,如果它是第一个,或者如果不是第一个则附加?
答案 0 :(得分:0)
我最终这样做了两轮。可能有一个更简洁的版本,但这可行
if (s.hasIn(['newRequest', 'productionAssets', action.productionId])) {
return s
.updateIn(['newRequest', 'productionAssets', action.productionId], (prodAssets) => prodAssets.push(action.assetId))
} else {
return s
.setIn(['newRequest', 'productionAssets', action.productionId], fromJS([action.assetId]))
}
答案 1 :(得分:0)
你可以这样做一个单行:
return s.updateIn(['newRequest', 'productionAssets', action.productionId], l => (l || List()).push(fromJS(action.assetId)));
这样,如果路径['newRequest', 'productionAssets', action.productionId]
中的值为undefined
,则可以使用List()
初始化它,然后将push()
新项目置于其中。如果列表确实如此已经存在,你只需要添加一个新项目。