Redux 如何从其他模型引用的模型中删除记录?
我有两个模型,其中模型A引用了模型B中的项目。当我从模型B中删除项目时,在我更新模型A以同时删除引用的项目之前,对重新提交做出反应 例如: 我有饲料。提要由不同类型的项组成。每种类型的项目都存储在其各自的模型中。 提要顺序存储为项目ID数组,引用其不同子存储中的项目 我在这里举了一个最小的失败例子。单击按钮三次后出现问题 关键是Redux 如何从其他模型引用的模型中删除记录?,redux,react-redux,easy-peasy,Redux,React Redux,Easy Peasy,我有两个模型,其中模型A引用了模型B中的项目。当我从模型B中删除项目时,在我更新模型A以同时删除引用的项目之前,对重新提交做出反应 例如: 我有饲料。提要由不同类型的项组成。每种类型的项目都存储在其各自的模型中。 提要顺序存储为项目ID数组,引用其不同子存储中的项目 我在这里举了一个最小的失败例子。单击按钮三次后出现问题 关键是 else控制台。错误(“>>>>提要订单包含已删除的项目”,id); 提要顺序可能包含已删除的项,这是有问题的,因为这可能意味着存在导致错误引用的编程错误。在这种情
else控制台。错误(“>>>>提要订单包含已删除的项目”,id);
提要顺序可能包含已删除的项,这是有问题的,因为这可能意味着存在导致错误引用的编程错误。在这种情况下,这不是编程错误,第二个存储区还没有更新
是否有一种方法可以批处理createAndDeleteTodo
,在整个thunk和所有子chunk完成之前不计算所有侦听器
在上面的例子中,只需要一个主操作来更新提要订单和项目就足够了,但是如果有不止一种类型的项目,因为每种项目类型都存在于其各自的模型中,则会感觉很麻烦。问题似乎在于您要将其分派到redux store 2次。首先是在创建新项目时,然后是在删除项目时 我建议这样做:
这样,在两个操作完成之前,不会重新请求任何操作。相同的thunk操作会触发多个操作。根据
useStoreState
的定义:
useStoreState将在对存储状态进行更新时执行
因此,实际上,当你在thunk中这样做时:
actions.setTodos({ newTodos: [newTodo], todoToDelete });
actions.updateFeedOrder({ newTodos: [newTodo], todoToDelete });
有两个操作被调度,它们将解释一个独立的存储状态更改事件侦听器。您将获得多个存储更新的多个渲染调用
您有两个选择:
- 将这些动作合并为一个动作,如示例所示:
- 或检查useStoreState方法,了解仅当两个存储值都与计数匹配时处理渲染的情况