无法正确更新react-redux状态(数组)



对于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]
}
}

如果确实是由于突变,上面的代码应该解决您的问题

最新更新