首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NgRx @Effect vs createEffect

NgRx @Effect vs createEffect
EN

Stack Overflow用户
提问于 2021-04-28 13:10:38
回答 1查看 1.3K关注 0票数 2

在ngrx中createEffect@Effect注解有什么不同?

代码语言:javascript
复制
@Injectable()
export class ContactsEffects {

constructor(
    private actions$: Actions,
    private contactsService: ContactsService,
    private contactsSocket: ContactsSocketService
  ) {}


  destroy$ = createEffect( () => this.actions$.pipe(
    ofType(remove),
    pluck('id'),
    switchMap( id => this.contactsService.destroy(id).pipe(
      pluck('id'),
      map(id => removeSuccess({id}))
    ))
  ));

  @Effect()
  liveCreate$ = this.contactsSocket.liveCreated$.pipe(
    map(contact => createSuccess({contact}))
  );

}
EN

回答 1

Stack Overflow用户

发布于 2021-04-28 13:24:06

@ NgRx /effects createEffect用于类型安全作为@Effect()装饰器的替代,NgRx 8提供了createEffect函数。使用createEffect的优点是它是类型安全的,如果效果不返回Observable<Action>,它将产生编译错误。对于不分派新操作的效果,选项{ dispatch: false }仍然存在,添加此选项还会删除效果需要返回Observable<Action>的限制。

默认情况下,从NgRx 8开始,会自动重新订阅发生这种情况时的效果。这为错过不愉快的道路增加了一个安全网。可以通过在效果级别将resubscribeOnError设置为false来关闭此功能。示例:

代码语言:javascript
复制
login$ = createEffect(() => .....), { resubscribeOnError: false });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67294087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档