Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不可变从Map | Redux状态的所有元素的数组中删除项_Redux_Immutability - Fatal编程技术网

不可变从Map | Redux状态的所有元素的数组中删除项

不可变从Map | Redux状态的所有元素的数组中删除项,redux,immutability,Redux,Immutability,在Redux状态下,从映射中的每个元素中移除数组中的项目时,我遇到了一些问题 使用以下结构 entities: { brands: (Map) { first: { ...props, strategists: [ '1', '2' ] }, second: { ...props, strategists: [ '1', '2' ] }, .. } } 这是我能做的最好的: co

在Redux状态下,从映射中的每个元素中移除数组中的项目时,我遇到了一些问题

使用以下结构

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()
);

嗨!我试图回答你的问题,并认为我可能有解决办法。但一开始我几乎没有试图解决这个问题,因为这一行的模糊性“
它不加起来”。将来你可能会想更具体一些:你有没有出错?(如果是,错误是什么?)?(如果是,请包括结果,并解释其与您预期的不同之处)。