所以我想使用这三种技术。我的想法是在normalizr的帮助下,有一个处理我所有实体的reducer。
redux-saga将侦听ENTITIES_REQUESTED
操作,运行请求实体的传奇,并进行ENTITIES_RECEIVED
操作,该操作将由调用normalizr的reducer处理并将实体存储在entities
切片。
对于删除实体,必须要做两件事:必须从状态中删除实体,并且必须发生副作用,这将从服务器中删除实体(侧点:我知道有些人会声称从状态中删除也是副作用,但我不认为redux-saga适用于这个概念。)
所以我可以有一个ENTITY_REMOVED
动作,它会从状态中删除实体,还有一个saga监听它,它将处理api调用。
现在让我们说我有一张桌子,桌面有批量删除功能。该表是" powered"由接受动作DATA_OPTIONS_SET
的reducer。 reducer更新当前页面,过滤器等内容。还会有一个saga来监听这个并调用API来返回新的数据集。
我希望有一个批量删除功能,在高级别删除所有实体,完成后,刷新表。
如果我遍历要删除的实体,并调度ENTITY_REMOVED
动作,我将无法知道何时完成这些删除,以便我可以刷新该表。
如果我手动调用删除实体的传奇,则永远不会调度ENTITY_REMOVED
,因此不会从商店中删除该实体。
这是否意味着我的架构不正确而且我在某个地方转了一圈?
答案 0 :(得分:0)
我会按如下方式解决你的问题:创建删除传奇
当然这不是唯一的选择,很多细节将取决于你的api是如何构建的。您可以在第3点手动删除每个实体,而不是从服务器获取所有实体并使用新实体列表更新整个状态,或者您可以在单个API中批量传递并传递所有需要删除的实体。请致电第2点。