在我的Angular / ngrx应用程序中,我使用@Effect在indexeddb中管理数据持久性。
@Effect() updateObj$ = this.actions$
.ofType(MyActions.UPDATE_OBJ)
.switchMap( payload => this.storage.set('obj', payload.rawObj));
但这不是我想要的: 我不想从有效载荷中保留原始对象, 但是我的reducer逻辑改变了对象 (实际上是结果状态)。
我见过的每个例子都是非常基本的,因此数据可以按原样持久保存。
我可以将这个逻辑放在我的控制器中,但我不认为它是实现这一目标的redux方法。
你能告诉我一个更好的方法吗?
答案 0 :(得分:2)
您可以使用.withLatestFrom运算符访问最新状态。
@Effect() updateObj$ = this.actions$
.ofType(MyActions.UPDATE_OBJ)
.withLatestFrom(this.store$.select(<your-state-selector-goes-here>))
.switchMap( ([action, state]) => ....);
由于效果是由操作调度触发的,因此您将收到的状态将是结果状态(由reducer处理UPDATE_OBJ操作返回)。