繁体   English   中英

无法正确更新 react-redux state(阵列)

[英]Unable to update a react-redux state properly (array)

我有以下 state 更新 function 用于 redux 阵列

if (replace) {
    return {
      ...state,
      mySelectionOtrosFiltros: items
    }
  } else {
    return {
      ...state,
      mySelectionOtrosFiltros: state.mySelectionOtrosFiltros.concat(a[0])
    }
  }

如果 replace 为 false,则 state 更新工作正常,我可以看到它正在更新。

但是,如果 repac 是真的,我想用一个名为items的新对象数组完全替换mySelectionOtrosFiltros这是一个对象数组

但那个案子是行不通的。

我可以看到 state.mySelectionOtrosFiltros 正在更新,但它没有重新渲染,所以我想我搞砸了不变性。 只有当我触发 else 语句时,它才会正确呈现,在这种情况下,会添加新元素并显示以前的更新。

非工作案例的例子

mySelectionOtrosFiltros = [{a: 1 , b: 2, c: 3}]

items = [{a: 2, b: 2, c: 2},{a:4 , b: 4, c: 4}]

myselectionotrosfiltros 应该完全替换为项目,所以它看起来像项目

return {
      ...state,
      mySelectionOtrosFiltros: items
    }

它没有被替换

您需要共享完整代码才能真正确定代码的哪些部分违反了不变性。

话虽如此,您仍然可以通过创建如下items的新副本来快速尝试

if (replace) {
    return {
      ...state,
      mySelectionOtrosFiltros: [...items]
    }
  }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM