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/