使用redux响应派生状态中的更改[已关闭]

nzk0hqpo  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(118)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

昨天关门了。
Improve this question
我在一个相当复杂的项目中使用redux。它有很多复杂的动作创建器、简化器和选择器。如果通过选择器计算的某些派生状态发生变化,我需要触发某个动作。
最简单的实现方式是遍历所有可以修改它的动作创建者,然后在那里插入触发器,但是这样做很糟糕,因为它有很多重复的代码,而且它无法防止将来添加一些动作,这些动作可以在没有触发器的情况下修改派生状态。
以前,这是通过React useEffect实现的,它将所有派生状态作为依赖项。这是一种非常干净和有效的方式来响应状态的变化。但是,现在我需要将此逻辑移动为仅redux。
实现这一目标的好办法是什么?

yzuktlbb

yzuktlbb1#

这听起来像是Redux Toolkit“侦听器”中间件的一个很好的用例,它特别具有运行React式逻辑以响应特定操作类型和基于状态的条件的能力。

listenerMiddleware.startListening({
  predicate: (action, currentState, previousState) => {
    // Trigger logic whenever this field changes
    return currentState.counter.value !== previousState.counter.value
  },
  effect: (action, listenerApi) => {
    // run arbitrary sync or async logic here, 
    // including dispatching actions, reading state, and much more
  }
})

有关详细信息,请参阅Redux文档和以下文章:

相关问题