我有两个商店 - 组店和itemsFilterStore。项目FilterStore的状态应包含组中可用组的单个组的选择,但是:
-
这些组最初在组店中不可用,因此最初无法做出项目filterstore的选择(构造函数将其初始化为null)。
-
一旦组在组中可用,我需要执行一个操作,该操作将选择一个组(根据某些逻辑)并在项目FilterStore中设置其ID。
问题:
i读到处触发商店中的动作操作者的动作是一个对立的。
那么我该如何正确设计?
好吧,我想出了两种处理此情况的方法。为了清楚起见,假设您有一个操作getGroups
,将请求启动到源。当请求成功时,它将启动GroupsStore
操作的操作resultsRecieved
。
1)您可以在商店中收听resultsRecieved
操作,并处理结果以更新ItemsFilterStore
。但是,在这种情况下,您可能需要将组选择逻辑从GroupsStore
提出到某个实用程序文件中,如果可能的话,可以在两个商店中导入和使用。
2)您可以在两家商店中收听getGroups
动作。在该操作的ItemsFilterStore
处理程序中,您可以使用Alt的Wait-For方法,该方法表明该商店依赖另一家商店以获取其数据,并且应该等待其更新。因此,ItemsFilterStore
中的GetGroups处理程序可能最终看起来像这样:
getGroups() {
this.waitFor(GroupsStore);
var groups = GroupsStore.getState().groups;
}
我不完全确定等待与异步源请求有多好,因为我只使用它来等待同步操作。