Eek*_*s33 12 redux ngrx ngrx-effects angular ngrx-store
我正在使用带有Angular和ngrx/store和ngrx/effects的redux风格的状态管理设计.每当我不从效果中返回动作时,我都会收到错误:
Cannot read property 'type' of undefined
Run Code Online (Sandbox Code Playgroud)
我研究了这个问题,发现在榆树架构中有一种称为"noop"的动作,当你不想用你的效果链接另一个动作时,你可以调用任何东西.在任何地方召唤这种noop行动对我来说都是非常重复的.我想知道这是否是一个不好的做法.有没有理由你不能产生不返回动作的效果?效果的意图总是有1个动作引发另一个动作吗?我想知道我是否误解了如何使用效果.
谢谢!
mtx*_*mtx 24
默认情况下,ngrx/effect会调度操作.
如果你想让一个效果"发射并忘记",你需要做的就是将它{dispatch: false}
作为参数添加到@Effects()
装饰器中.
用
@Effect()
装饰器装饰的Observable 预计将是一系列要调度的动作.传递{ dispatch: false }
给装饰器以防止分派操作.用法:
class MyEffects {
constructor(private actions$: Actions) { }
@Effect({ dispatch: false }) logActions$ = this.actions$
.do(action => {
console.log(action);
});
}
Run Code Online (Sandbox Code Playgroud)
在引擎盖下,这是由ignoreElements
操作员实现的.(如果您有兴趣,这里是ngrx/effects的源代码).
ignoreElements
有一个内置的noop函数,每次效果运行时都会调用它.
简而言之,ngrx/effects中不需要明确的noop-action.我不会直接称之为"不良行为"来发出一个noop-action,但在使用ngrx时肯定没有必要.
归档时间: |
|
查看次数: |
5680 次 |
最近记录: |