所以我想使用这三种技术。我的想法是在 normalizr 的帮助下拥有一个处理我所有实体的减速器。
redux-saga 将监听ENTITIES_REQUESTED
动作,运行一个请求实体的 saga,并执行一个ENTITIES_RECEIVED
动作,该动作将由调用 normalizr 并将实体存储在entities
切片中的 reducer 处理。
为了删除一个实体,有两件事必须发生:必须从状态中删除实体,并且必须发生副作用,它将从服务器中删除实体(旁白:我知道有些人会声称从状态中删除也是一个副作用,但我认为 redux-saga 不适用于这个概念)。
所以我可以有一个ENTITY_REMOVED
动作,它将从状态中删除实体,以及一个监听它的 saga,它将处理 api 调用。
现在假设我有一个表,该表具有批量删除功能。该表由接受 action 的减速器“供电” DATA_OPTIONS_SET
。reducer 会更新当前页面、过滤器等内容。还会有一个 saga 来自监听此内容并调用 API 以返回新数据集。
我想有一个批量删除功能,它在高级别删除所有实体,完成后刷新表。
如果我遍历要删除的实体并调度一个ENTITY_REMOVED
动作,我将无法知道这些删除何时完成,以便我可以刷新表。
如果我手动调用删除实体的 saga,ENTITY_REMOVED
将永远不会被调度,因此实体不会从商店中删除。
这是否意味着我的架构不正确并且我在某个地方转错了方向?