Reactjs React Redux删除同步数组的对象

Reactjs React Redux删除同步数组的对象,reactjs,redux,Reactjs,Redux,我将以下示例保存在redux中的数组中: example: [ { type: "A", value: 25 }, { type: "B", value: 23 }, { type: "C", value: 324 }, { type: "A", value: 25 }, ] 如您所见,某些对象可能会多次出现,不应更改。 现在,我尝试在不使用索引的情况下从列表中删除特定对象。这很容易,因为我可以根据下面的比较检查对象是否是要删除的对象: example[0] == exampl

我将以下示例保存在redux中的数组中:

example: [
  { type: "A", value: 25 },
  { type: "B", value: 23 },
  { type: "C", value: 324 },
  { type: "A", value: 25 },
]
如您所见,某些对象可能会多次出现,不应更改。 现在,我尝试在不使用索引的情况下从列表中删除特定对象。这很容易,因为我可以根据下面的比较检查对象是否是要删除的对象:

example[0] == example[2]  // => false
example[0] === example[2] // => false

example[0] == example[0]  // => true
example[0] === example[0] // => true
问题是[]的aynchronous行为。我使用它删除我的reducer中的一个条目,您可以在这里看到它的实现:

case EXAMPLE.REMOVE:
    return state.filter((obj) => obj !== action.payload.objectToRemove)
因为当我快速删除条目时,有时可能会在筛选过程中删除条目,但另一个筛选函数当前也在运行,然后先前从另一个筛选函数中删除的对象将恢复状态。 我如何确保减速器同步工作以避免此类赛车条件,或者有更优雅的方式

PS:我很确定redux的异步行为是需要的,而且正确的方法是这样做的,我可以需要另一个吗


编辑:我之所以能够解决这个问题,是因为,如注释中所述,它不是由reducer的异步调用引起的,而是由每个组件的重新加载引起的,这是因为我没有分配一个键,并且在要删除的条目之后出现的所有条目都被卸载,并在ui中再次装载,每个数组条目都被呈现为一个组件。似乎我误解了导致问题的真正原因。

array.filter是同步的,redux reducer也是同步的。从你给我们的信息来看,比赛条件是不可能的。您可能需要给我们提供更多的上下文。检查redux thunk,我只是检查一下您所说的@NicholasTower我在reducer中的筛选器调用前后添加了控制台日志,它们似乎是按您所说的顺序执行的。仅出于某些原因,过滤器在某些情况下不会删除条目。大多数情况下它都能工作,有时不能,尤其是当我分派的操作Get more/fasterarray.filter是同步的,通常redux还原程序也是同步的。从你给我们的信息来看,比赛条件是不可能的。您可能需要给我们提供更多的上下文。检查redux thunk,我只是检查一下您所说的@NicholasTower我在reducer中的筛选器调用前后添加了控制台日志,它们似乎是按您所说的顺序执行的。仅出于某些原因,过滤器在某些情况下不会删除条目。大多数情况下,它是有效的,有时是无效的,尤其是当我发送的动作越来越多/越来越快时