我正在使用带有Angular和ngrx / store和ngrx / effects的redux风格的状态管理设计 . 每当我不从效果中返回动作时,我都会收到错误:
Cannot read property 'type' of undefined
我研究了这个问题,发现在榆树架构中有一种叫做“noop”的动作,当你不想用你的效果链接另一个动作时,你可以调用任何东西 . 在任何地方召唤这个noop行动对我来说都是非常重复的 . 我想知道这是否是一个不好的做法 . 有没有理由你不能产生不返回动作的效果?效果的意图总是有1个动作引发另一个动作吗?我想知道我是否误解了如何使用效果 .
谢谢!
1 回答
默认情况下,ngrx / effect会调度操作 .
如果你想要一个效果是'fire-and-forget',你需要做的就是将
{dispatch: false}
作为参数添加到@Effects()
装饰器中 .来自@ngrx/effects docs:
在引擎盖下,这是通过ignoreElements operator实现的 . (Here是ngrx / effects的源代码,如果你感兴趣的话) . 每次效果运行时,
ignoreElements
都会built in noop function得到called .简而言之,ngrx / effects中不需要明确的noop-action . 我不会直接称之为“不良行为”来发送一个noop-action,但在使用ngrx时肯定没有必要 .