Що робить Effect?
Effect у NgRx - це слухач дій, який реагує на них і виконує побічні ефекти, наприклад:
- надсилає HTTP-запит,
- пише в localStorage,
- диспатчить нові actions на основі результату.
Він не змінює стан напряму. Він просто "чує" action і робить щось асинхронне.
Приклад:
- Користувач натискає "увійти":
ts
this.store.dispatch(login({ email, password }));- Effect "чує" цей action:
ts
login$ = createEffect(() =>
this.actions$.pipe(
ofType(login),
switchMap(action =>
this.authService.login(action.email, action.password).pipe(
map(user => loginSuccess({ user })),
catchError(() => of(loginFailure()))
)
)
)
);- Він викликає
authService.login(...), чекає на відповідь і диспатчитьloginSuccessабоloginFailure.
Що робить Effect:
- реагує на дії,
- запускає async-операції (API, таймери, запити),
- надсилає нові actions із результатами.
Висновок:
Effect - це сполучна ланка між actions і зовнішнім світом.
Якщо потрібно вийти за межі store, це завжди через нього.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.