Redux,useSelector和map:在更改状态后,map()不会更改内容

时间:2020-11-12 00:52:24

标签: javascript reactjs redux

我正在使用带有Redux工具包的CRUD减速器。减速器工作正常,但是显示该列表的react组件不会更新对象的内容。

我的组件正在像这样捕获状态:

const products = useSelector(state => state.ProductReducer.products);

我正在像这样映射数组:

{products.length > 0 &&
              products.map((prod, index) => (
                <ProductView
                  key={index.toString()}
                  product={prod}
                  update={_udpatePro}
                  remove={_deleteProp}
                />
              ))}

我有一个_deleteProp函数,该函数调度destroy async函数,该函数发送请求以从服务器销毁该项目(工作正常),然后从redux slice中删除该项目(工作正常)。

问题是与映射有关...它会更新新的项目数,而不更新更新的对象。

例如,状态数组如下:

[{
  "id": 1,
  "title": "Annaliese",
}, {
  "id": 2,
  "title": "Byrom",
}, {
  "id": 3,
  "title": "Xymenes",
}]

在更新状态后,删除第二项,状态看起来像这样:

[{
  "id": 1,
  "title": "Annaliese",
}, {
  "id": 3,
  "title": "Xymenes",
}]

但是在映射状态数组的react组件中,它看起来像这样:

[{
  "id": 1,
  "title": "Annaliese",
}, {
  "id": 2,
  "title": "Byrom",
}]

我认为解决方案有点简单或合乎逻辑,但现在我的想法有点cho,我看不出问题出在哪里。

谢谢。

0 个答案:

没有答案