对于redux数组,我有以下状态更新函数
if (replace) {
return {
...state,
mySelectionOtrosFiltros: items
}
} else {
return {
...state,
mySelectionOtrosFiltros: state.mySelectionOtrosFiltros.concat(a[0])
}
}
如果replace为false,则状态更新工作正常,并且我可以看到它正在更新。
但是如果replace为真,我想用一个新的名为items
的对象数组来完全替换mySelectionOtrosFiltros
,这是一个对象数组
但是这种情况行不通。
我可以看到状态。mySelectionOtrosFiltros正在更新,但它没有重新渲染,所以我猜我搞砸了不变性。只有当我触发else语句时,它才会被正确呈现,在这种情况下,新元素被添加,以前的更新现在被显示。
不工作的例子
mySelectionOtrosFiltros = [{a: 1 , b: 2, c: 3}]
items = [{a: 2, b: 2, c: 2},{a:4 , b: 4, c: 4}]
myselectionotrosfiltros应该完全替换为items,所以它看起来像items
return {
...state,
mySelectionOtrosFiltros: items
}
它不会被替换
您需要共享完整的代码,以便真正确定代码的哪些部分违反了不可变性。
话虽如此,你仍然可以通过创建items
的新副本来快速尝试,如下所示
if (replace) {
return {
...state,
mySelectionOtrosFiltros: [...items]
}
}
如果确实是由于突变,上面的代码应该解决您的问题