首页 > 解决方案 > Reducer 状态没有被新对象更新 [redux, redux-toolkit, normalize]

问题描述

有一个 DeliveryManifestView 组件。它运行一个分派 thunk 的效果。

useEffect - 获取数据

thunk 从 api 获取数据,然后用normalizr.

normalizedData传递给由 创建的动作redux-toolkit

获取数据,规范化,并传递给reducer

并且reducer返回实体的新对象。

返回实体

它在第一次运行时完美运行。但是,如果我去另一个视图然后回来

效果重新运行,thunk 被调度,

数据来自api,

数据再次传递给reducer,reducer返回新数据,

但状态没有变化,我仍然得到旧状态。

这是来自 redux devtools 的操作差异

这是第一次渲染 第一次运行

返回另一个视图并返回后

此处未更改数据

数据缩减器中没有差异,即使新数据来自 api。

标签: reactjsreduxreact-reduxnormalizrredux-toolkit

解决方案


问题是,当 normalizr 获得一个空数组时,它返回一个undefined,因此 reducerundefined也返回,导致没有任何变化。这是我想出的解决方案

在此处输入图像描述

deliveryPackages.


推荐阅读