gpt4 book ai didi

javascript - NgRx @Effect 与 createEffect

转载 作者:行者123 更新时间:2023-12-05 00:34:48 24 4
gpt4 key购买 nike

createEffect 和有什么区别对比 @Effect ngrx中的注释?

@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}))
);

}

最佳答案

@ngrx/效果
createEffect 用于类型安全
作为 @Effect() 的替代装饰器,NgRx 8 提供了 createEffect功能。使用 createEffect 的优势是它是类型安全的,如果效果不返回 Observable<Action>它会给出编译错误。选项 { dispatch: false }对于不派发新 Action 的效果仍然存在,添加此选项也消除了效果需要返回 Observable<Action> 的限制.
从 NgRx 8 默认开始,发生这种情况时会自动重新订阅效果。这为错过不愉快路径的地方增加了一个安全网。
可以通过设置 resubscribeOnError 来关闭此功能在效果级别为假。
例子:

login$ = createEffect(() => .....), { resubscribeOnError: false });

关于javascript - NgRx @Effect 与 createEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67294087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com