如何在 redux-saga 中"销毁所有"给定的资源类型?



我是Redux Saga的新手,所以请假设基础知识非常不可靠。

在Redux中,我能够定义一个操作和一个后续的reducer来处理该操作。在我的reducer中,我可以做任何我想做的事情,比如"删除所有"特定状态树节点,例如

switch action.type
...
case 'DESTROY_ALL_ORDERS'
return {
...state,
orders: []
}

然而,在我看来(在阅读了文档之后(,reducers是由Saga定义的,并且您可以以某些给定的CRUD动词前缀的形式访问它们,并进行调用后修复。例如。fetchStartdestroyStart

我的直觉是使用destroyStart,但该方法接受模型实例,而不是集合,即它只能销毁给定的资源实例(在我的情况下,是一个Order(。

TL;DR

  1. 对于一组记录,是否同时存在destroyStart等价物
  2. 如果没有,有没有一种方法可以将自定义行为添加到Saga创建的减速器中

错过了什么?你想怎么刻薄就怎么刻薄,我不知道我在做什么,但当你烤完我之后,帮我一个忙,给我指明正确的方向。

编辑:

为了澄清,我并没有试图从数据库中删除记录。我只想清除Redux商店中所有"订单"记录。

这里获得了两个关键的知识点。

  1. 我的团队正在使用一个名为redux-api资源的库,在某种程度上我将其与Saga混为一谈。这个库是由一位前员工创建的,它增加了与删除一样多的复杂性。我不推荐。DestroyStart是这个库提供的,与佐贺没有特别的关系。然而,对于任何使用此库(redux-api资源(的人来说,答案是不,没有批量销毁操作

  2. 正如@Chad S.在上述评论中指出的那样,减速器是由Saga创建的。我的想法错误在于,我认为我应该以某种方式打开这个减速器,并用复杂的逻辑填充它。实现这一点的"Saga"方法是将逻辑放在生成器函数中,这是您(可以(定义控制流的地方。我并不声称这是最佳实践,只是说这是我设法使代码工作的方式。

一般来说,我对佐贺和Redux知之甚少,所以请对这些答案持保留态度。

最新更新