加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 为什么必须ngrx / redux效果返回动作?是否正在使用

发布时间:2020-12-17 06:54:56 所属栏目:安全 来源:网络整理
导读:我正在使用带有Angular和ngrx / store和ngrx / effects的redux风格的状态管理设计.每当我不从效果中返回动作时,我都会收到错误: Cannot read property 'type' of undefined 我研究了这个问题,发现在榆树架构中有一种称为“noop”的动作,当你不想用你的效果
我正在使用带有Angular和ngrx / store和ngrx / effects的redux风格的状态管理设计.每当我不从效果中返回动作时,我都会收到错误:

Cannot read property 'type' of undefined

我研究了这个问题,发现在榆树架构中有一种称为“noop”的动作,当你不想用你的效果链接另一个动作时,你可以调用任何东西.在任何地方召唤这种noop行动对我来说都是非常重复的.我想知道这是否是一个不好的做法.有没有理由你不能产生不返回动作的效果?效果的意图总是有1个动作引发另一个动作吗?我想知道我是否误解了如何使用效果.

谢谢!

解决方法

默认情况下,ngrx / effect会调度操作.

如果你想要一个“即发即忘”的效果,你需要做的就是将{dispatch:false}添加为@Effects()装饰器的参数.

从@ngrx/effects docs:

Observables decorated with the @Effect() decorator are expected to be a stream of actions to be dispatched. Pass { dispatch: false } to the decorator to prevent actions from being dispatched.

Usage:

class MyEffects {
  constructor(private actions$: Actions) { }

  @Effect({ dispatch: false }) logActions$= this.actions$
    .do(action => {
      console.log(action);
    });
}

在引擎盖下,这是通过ignoreElements operator实现的.(如果您感兴趣,Here是ngrx /效果的源代码).
ignoreElements有一个built in noop function,每次效果运行时都会得到called.

简而言之,ngrx / effects中不需要明确的noop-action.我不会直接称之为“不良行为”来发出一个noop-action,但在使用ngrx时肯定没有必要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读