不可变从Map | Redux状态的所有元素的数组中删除项
在Redux状态下,从映射中的每个元素中移除数组中的项目时,我遇到了一些问题 使用以下结构不可变从Map | Redux状态的所有元素的数组中删除项,redux,immutability,Redux,Immutability,在Redux状态下,从映射中的每个元素中移除数组中的项目时,我遇到了一些问题 使用以下结构 entities: { brands: (Map) { first: { ...props, strategists: [ '1', '2' ] }, second: { ...props, strategists: [ '1', '2' ] }, .. } } 这是我能做的最好的: co
entities: {
brands: (Map) {
first: {
...props,
strategists: [
'1', '2'
]
},
second: {
...props,
strategists: [
'1', '2'
]
}, ..
}
}
这是我能做的最好的:
const newBrands = state
.get('brands')
.map(brand => brand.updateIn(['strategists'], strategists => strategists.filter(s => s !== id)))
return state.set(['brands'], newBrands)
我没有把这些加起来,而且我在网上也找不到
谢谢我以前没有使用过Immutable.js,但我使用了您的代码示例,直到最后一行,您使用
state.set(['brands'],newBrands)
而不是state.set('brands',newBrands')设置状态时,一切似乎都正常工作代码>这可能是问题所在吗?否则,唯一的变化是我假设第一个
和第二个
也应该是映射
s,因此如果在此之前出现错误,可能这也是问题的一部分
我加入了代码,以防万一:
const state=Immutable.Map({});
const original=不可变的.Map({
第一:不可变的.Map({
someProp:'someValue1',
战略家:[
'1', '2', '3'
]
}),
第二:不可变。映射({
someProp:'someValue2',
战略家:[
'1', '2', '3'
]
})
});
常数id='2';
康斯特品牌=原创
.map(品牌=>
brand.updateIn(['stratears',stratears=>
策略师.filter(s=>s!==id)
)
);
const newState=state.set('brands',brands);
console.log(
newState.get('brands')
.toString()
);代码>
嗨!我试图回答你的问题,并认为我可能有解决办法。但一开始我几乎没有试图解决这个问题,因为这一行的模糊性“它不加起来”。将来你可能会想更具体一些:你有没有出错?(如果是,错误是什么?)?(如果是,请包括结果,并解释其与您预期的不同之处)。