首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ngrx/effects中做if/else?

在ngrx/effects中使用if/else语句可以通过使用RxJS的操作符来实现条件逻辑。下面是一个示例:

  1. 首先,确保已经安装了@ngrx/effectsrxjs依赖。
  2. 在你的effects文件中,导入所需的操作符和其他必要的依赖:
代码语言:txt
复制
import { Injectable } from '@angular/core';
import { Actions, createEffect, ofType } from '@ngrx/effects';
import { map, mergeMap } from 'rxjs/operators';
import { of } from 'rxjs';
  1. 创建一个Effect类并使用@Injectable装饰器进行注入:
代码语言:txt
复制
@Injectable()
export class YourEffectClass {
  constructor(private actions$: Actions) {}
  
  yourEffect$ = createEffect(() =>
    this.actions$.pipe(
      ofType('YOUR_ACTION_TYPE'),
      mergeMap((action) => {
        if (action.condition) {
          // 处理条件为true的情况
          return of({ type: 'ACTION_TYPE_IF_TRUE', payload: action.payload });
        } else {
          // 处理条件为false的情况
          return of({ type: 'ACTION_TYPE_IF_FALSE', payload: action.payload });
        }
      })
    )
  );
}

在上面的示例中,我们使用ofType操作符来过滤出特定的action类型。然后,使用mergeMap操作符来处理每个action,并根据条件使用if/else语句返回相应的action。

  1. 在你的模块中将该Effect类添加到EffectsModule.forRoot([])中:
代码语言:txt
复制
import { EffectsModule } from '@ngrx/effects';

@NgModule({
  imports: [
    EffectsModule.forRoot([YourEffectClass]),
    // 其他模块导入
  ],
  // 其他配置
})
export class YourModule { }

这样,当触发YOUR_ACTION_TYPE类型的action时,yourEffect$将会被触发,并根据条件执行相应的逻辑。

请注意,以上示例中的'YOUR_ACTION_TYPE''ACTION_TYPE_IF_TRUE''ACTION_TYPE_IF_FALSE'仅为示例,你需要根据实际情况替换为你自己的action类型。

关于ngrx/effects的更多信息和示例,请参考腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 何在 FPGA 数学运算

    FPGA 非常适合进行数学运算,但是需要一点技巧,所以我们今天就看看如何在 FPGA 中进行简单和复杂的数学运算。...定点数学运算 定点数的小数点位于向量的固定位置。小数点左边是整数元素,小数点右边是小数元素。这意味着我们可能需要使用多个寄存器来准确量化数字。幸运的是 FPGA 的寄存器通常很多。...然而,在可编程逻辑实现定点数学运算有几个优点,而且实现起来要简单得多。...(22 downto 0)= A(15 downto 0)* B(7 downto 0) C(8 downto -1)= A(15 downto 0)/ B(7 downto 0) 除法时的...0); op_val : out std_logic; op : out std_logic_vector(8 downto 0)); end complex_example; 接下来我们的是为状态机定义状态

    59820

    何在TomcatTLS客户端认证

    常见的https网站的是服务端认证(server authentication),浏览器通过证书判断你所访问的https://baidu.com是否真的是百度,而不是其他人伪造的网站。...先来讲讲概念然后举个tomcat的例子讲讲怎么。 概念 服务端认证 不论是Server authentication还是Client authentication都需要证书。...两端互信 好了,到此为止server和client的证书都已经生成了,接下来只需要将各自的root-ca添加到彼此都truststore。...把server-root-ca导入到client的truststore cd client-secrets/jks keytool -importcert \ -alias server-root-ca...配置Tomcat 好了,我们现在client和server都有了自己证书放在了自己的keystore,而且把彼此的root-ca证书放到了自己的truststore里。

    2.7K20

    【DB笔试面试511】如何在Oracle写操作系统文件,写日志?

    题目部分 如何在Oracle写操作系统文件,写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...image.png 其它常见问题如下表所示: 问题 答案 Oracle哪个包可以获取环境变量的值? 可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值。...在CLIENT_INFO列存放程序的客户端信息;MODULE列存放主程序名,包的名称;ACTION列存放程序包的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。...如何在存储过程暂停指定时间? DBMS_LOCK包的SLEEP过程。例如:“DBMS_LOCK.SLEEP(5);”表示暂停5秒。 DBMS_OUTPUT提示缓冲区不够,怎么增加?...如何在Oracle写操作系统文件,写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。

    28.8K30

    代码安全性和健壮性:如何在if和assert选择?

    ) ((void)0) #else #define assert(condition) /*implementation defined*/ #endif 既然是宏定义,说明是在预处理的时候进行宏替换...从上面的定义可以看到: 如果定义了宏 NDEBUG,那么 assert() 宏将不做什么动作,也就是相当于一条空语句:(void)0;,当在 release 阶段编译代码的时候,都会在编译选项(Makefile...在开发阶段,编译选项不定义 NDEBUG 这个宏,那么 assert 就发挥作用; 2....5. if-else 的本质 if-else 语句用于逻辑处理,它是为了处理各种可能出现的情况。就是说:每一个分支都是合理的,是允许出现的,我们都要对这些分支进行处理。 6....不允许:就用 assert 断言,在开发阶段就尽量找出所有的错误情况; 允许:就用 if-else,说明这是一个合理的逻辑,需要进行下一步处理。 ----

    88020

    写在 2021: 值得关注学习的前端框架和工具库

    对于我认为较为主流的则不会包含(Vue与React框架本身这种~)。...IceStore[3],淘系Ice团队出品的状态管理库,我在日常业务中使用最多的一个状态管理方案,亮点是基于Immer来实现数据不可变,整体的使用方案类似Dva,state + reducer + effects...大而全,这一点见仁见智,能接受的会觉得很舒服,并且团队定制也特别容易(schematics、generators、builders),各种规范是真的能确保不会一人一个写法。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...秉承了Angular的思想,提供了一整套的集成:和Angular Router的集成:@ngrx/router-store;对于集合类型的适配:@ngrx/entity;副作用管理:@ngrx/effects

    4.2K10

    写在2021: 值得关注学习的前端框架和工具库

    对于我认为较为主流的则不会包含(Vue与React框架本身这种~)。...IceStore,淘系Ice团队出品的状态管理库,我在日常业务中使用最多的一个状态管理方案,亮点是基于Immer来实现数据不可变,整体的使用方案类似Dva,state + reducer + effects...大而全,这一点见仁见智,能接受的会觉得很舒服,并且团队定制也特别容易(schematics、generators、builders),各种规范是真的能确保不会一人一个写法。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...秉承了Angular的思想,提供了一整套的集成:和Angular Router的集成:@ngrx/router-store;对于集合类型的适配:@ngrx/entity;副作用管理:@ngrx/effects

    2.8K10

    何在 Innovus集成的Dummy Metal Fill分析

    何在设计中有效考虑Dummy Metal Fill对于芯片 文章作者: 张倩忆, Cadence公司数字设计事业部产品工程总监 沈龙, Cadence公司数字设计事业部产品工程师 舒越, Cadence...目前的EDA公司,Cadence公司的工具PVS 和Pegasus已经提供了成熟的插入Dummy Metal Fill的功能。...然而在28nm工艺,这些寄生电容的影响就提升到了2.5%。在16nm工艺,其平均误差会达到4%。在更先进10nm、7nm及以下工艺,其影响会更大,达到甚至超过5% 。这样的误差就无法再忽略了。...其中某些net的电容增加甚至会达到20%-50%,对于这样幅度的增加,在芯片设计是无法接受的。 下图(右)所示,我们对IVMF的寄生抽取和GDS MF的抽取结果进行对比,其最大误差在1%左右。...3     先进工艺(7nm)研发实例分析 ? 有无MF最大误差在17%左右 ?

    2.9K20

    调试 RxJS 第2部分: 日志篇

    所以,用户请求 observables 的堆栈跟踪也指向 medium.js (译者注: 即上面的代码文件) 的 subscribe 调用: ?...当编写 redux-observable 的 epics 或 ngrxeffects 时,我见过一些开发者的代码大概是这样的: ? 乍看上去没什么问题,而且大多数情况下也能正常运行。...在 epic ,catch 返回的 observable 完成了,epic 也就完成了。 解决方法是将 map 和 catch 的调用移到 switchMap 里面,就像这样: ?...在这两个示例,对于被调试的代码来说,唯一需要修改就是是添加了某个标记注释。 注释是轻量级的,只需添加一次,我倾向于将它们留在代码。...日志没什么可兴奋的,但是从日志的输出收集到的信息通常可以节省大量的时间。采用灵活的标记方法可以进一步减少处理日志相关代码的时间。

    1.2K40

    早读《Making setInterval Declarative with React Hooks》

    https://overreacted.io/making-setinterval-declarative-with-react-hooks/ 这是Dan的一篇文章,详细阐述了如何在Hooks中使用setInterval...我们在 effects 中直接使用定时器会重复启动然后清除,effects 在每次渲染时都会被调用,因此我们需要一个传递一个空数组来保证它只会被调用一次,此时获取 count 新值就会很困难。...最简单处理方式是使用 state callback : setCount((count) => count + 1) 原因 effects 是一个闭包,一直引用了第一次渲染时 count 的值,虽然 state...如果我们想通过参数来控制它的行为,比如暂停,重启 interval 等,假设我们的设计 delay 参数为 null 时暂停 interval ,是数值时就启动 interval,该如何?...我们只需要在 effects 一点小改动: useEffect(() => { function tick() { savedCallback.current(); } if

    64040

    Facebook F8大招频出,VR社交真会成为杀手级应用?

    在VR影片播放时,用户可以一边观看影片一边讨论剧情,就像人们在家中看电影时的那样。该应用的测试版已于昨日发布,但其目前只支持Oculus Rift和其控制器。...此外,React VR还支持各种API(WebGL和WebVR),并允许将头显与网页的场景进行连接。 ?...Oculus的软件工程师Andrew Imm和Mike Armstrong也将就如何在React Native基础上用React VR构建内容向在座开发者传授经验。...Camera Effects:让相机成为Facebook AR的第一个平台 ? 在本届F8上,Facebook的CEO Mark Zuckerberg在主题演讲推出了一个AR平台。...Camera Effects平台允许开发者为Facebook的摄像头创建AR效果,面具和特效等。事实上,作为基础的Camera Effects承载着Facebook不小的野心。

    1.2K80
    领券