假设您通过从BookComponent调度CREATE_BOOK操作来创建新Book.在效果中,我们正在处理http保存,之后我们通过CREATE_BOOK_SUCCESS操作将创建的Book传递给reducer.到现在为止还挺好.
但是如何获得产生CREATE_BOOK操作的BookComponent中新创建的Book的ID?我只能想到解决方法:
>将创建的书籍保存在状态lastCreatedBook中.如果我有很多不同的项目,这似乎不可扩展.此外,我必须在组件被销毁时清理该字段.
>检索BookComponent中的完整书籍列表.最后一个是创建的书.
>不要使用ngrx /效果.只需调用BookService.create()方法并订阅它.从那里调度CREATE_BOOK_SUCCESS操作.但那么为什么首先使用效果呢?
解决方法
您不能直接让组件知道已创建的ID,因为您必须遵循redux的单向数据流.
如果你真的想在某个地方使用ID,你可以像你提到的那样将它存储在你的商店状态中,或者创建ID客户端.
如果要在列表中的某处突出显示已创建的书籍,可以实现* ngFor指令的trackBy
function并在新创建的项目上创建动画.