【发布时间】:2020-06-10 13:13:10
【问题描述】:
这个问题与ngrx example-app提供的示例有关(我不知道我是否可以将其发布到他们的Github页面......)
因此,在创建新项目时,我希望遵循最佳准则,这就是为什么我要检查示例应用程序作为参考。例如,在应用程序中,当他们尝试删除书籍实体时,请执行以下操作:
- 组件分派请求,将操作“removeBook”和“book”对象作为有效负载 (selected-book-page.component.ts:40)
- 效果会处理该问题,如果成功,它会调用“removeBookSuccess”操作,将图书从商店中移除 (collection.effects.ts:65)
现在第二种情况是,当它失败时,它也会使用 book 对象调用“removeBookFailure”,实际上该操作将完全像“addBookSuccess”一样处理
on(
CollectionApiActions.addBookSuccess,
CollectionApiActions.removeBookFailure,
(state, { book }) => {
if (state.ids.indexOf(book.id) > -1) {
return state;
}
return {
...state,
ids: [...state.ids, book.id],
};
}
),
我们真的需要这样做吗?我的意思是,有问题的书从一开始就没有被删除。还是我在这里遗漏了什么。
感谢您的帮助!
【问题讨论】:
-
我想知道这是否最初是作为一个乐观的删除,
CollectionApiActions.removeBook删除该书(reducer)? -
这也是我的猜测,但他们并没有从状态中删除 id,只有在成功之后..
-
@fzwael 我在 github 上创建了问题。一旦核心团队决定应该采用哪种方式,请告诉我您是否想做 PR(如果您以前没有做过,我建议您这样做)
-
@AndrewAllen 是的,我可以创建一个 PR,但如果真的有必要,我们不应该与核心团队核实吗?
-
其实是的,因为在下一行有一个条件
if (state.ids.indexOf(book.id) > -1)所以这是真的,我们不会添加另一本书。但问题是这总是正确的,所以不需要代码(即使我们保留它时没有问题)
标签: angular typescript rxjs ngrx