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