redux - RTK Query - 禁用单个端点的不变性

我在我的项目中引入了 RTK Query 。但是,从一个端点检索的数据(使用 createApi 创建)被馈送到 D3 库,该库立即开始对数据进行变异。由于 RTKQ 返回不可变数据,因此 D3 会抛出错误提示 object is not extensible。所以我的问题是

有没有办法为特定端点禁用 RTKQ 的不变性?

我知道我可以复制检索到的数据并在以后使用该副本,但我想避免这样做。

请注意,数据不是应用程序状态的一部分,因此我无法使用 https://redux-toolkit.js.org/api/immutabilityMiddleware 中所述的 ignoredPaths 禁用不变性。

回答1

不,绝对没有办法禁用单个端点的冻结。 RTK 对使用 createSlice 制作的所有 reducer 使用 Immer,RTKQ 使用 createSlice 生成其缓存 reducer,所有缓存数据都进入该 reducer。因此,Immer 将冻结所有这些数据。

另外,请注意,您链接的不变性检查中间件与减速器中的 Immer 冻结状态不同。

在 UI 层复制数据,比如在 useMemo() 中,将是您最好的选择。

相似文章

最新文章