Ngrx | Angular
- Ngrx | Angular
https://www.youtube.com/watch?v=yCac7PRG6R4
-
Primeirocriamos o arquivo*.action.ts- Por exemplo, no contexto de cursos seris
courses.action.ts
import { createAction, props } from "@ngrx/store";
import { Course } from "./model/course";
export const loadAllCourses = createAction(
"[Course Resolver] Load All Courses",
);
export const allCoursesLoaded = createAction(
"[Load Course Effect] All Courses Loaded",
props<{ courses: Course[] }>(),
); - Por exemplo, no contexto de cursos seris
-
Segundocria-seaction-types.tsimport * as CourseActions from './course.action';
export {CourseActions} -
Terceirocriacourses.resolver.tsimport { Injectable } from "@angular/core";
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from "@angular/router";
@Injectable()
export class CoursesResolver implements Resolve<any>{
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
}
}-
No rounting do module, tem que adicionar a configuração também e no provider da classe
{
path: '',
component: HomeComponent,
resolve: {
courses: CoursesResolver
}
}, -
Quartocria se oseffectse adiciona no module dentro dosimports@Injectable()
export class CoursesEffects {
loadCourses$ = createEffect(() =>
this.actions$.pipe(
ofType(CourseActions.loadAllCourses),
concatMap(action => this.coursesHttpService.findAllCourses()),
map(courses => allCoursesLoaded({ courses })),
),
);
constructor(
private actions$: Actions,
private coursesHttpService: CoursesHttpService,
) {}
}
Explicação
NgRx Building Blocks Cheat Sheet
-
Actions express unique events that happen throughout your application.
-
Selectors are pure functions used for obtaining slices of store state.
-
Reducers in NgRx are responsible for handling transitions from one state to the next state in your application.
-
Effects use streams to provide new sources of actions to reduce state based on external interactions such as network requests, web socket messages, and time-based events.
-
Store is a controlled state container designed to help write performant, consistent applications on top of Angular.
-
Algums exemplos para se manter no
“Store”- • JSON data returned from GET calls
- • The current state of an accordion (open/closed)
- • The user’s logged-in status
- • Current color theme of the application
- • User account settings
-
selector→ usa quando você precisa buscar algumas coisa que esteja nostore -
sempre precisamos de uma interface sobre o estado e o valor inicial dela. Exemplo
export interface IAuthState {
user: User;
}
export const initialAuthState: IAuthState = {
user: undefined,
};
Effects
- Em uma aplicação angular, é necessário lidar com ações impuras. Ações impuras podem ser solicitação de rede, mensagens de soquete da web e eventos baseados em tempo. Em um aplicativo angular baseado em serviço, os componentes são responsáveis por interagir com recursos externos por meio de serviços. Os efeitos fornecem uma maneira de interagir com esses serviços, a fim de isolá-los do componente. Eles lidam com tarefas como buscar dados, executar tarefas que produzem vários eventos e outras interações externas em que os componentes não precisam de conhecimento explícito de tais interações. Em outras palavras
Reducers
- Os redutores são funções responsáveis pelo tratamento de transições de um estado para o próximo estado em um aplicativo. São funções puras no sentido de que produzem a mesma saída para uma determinada entrada. Eles fazem isso sem nenhum efeito colateral, lidando com a transição do estado de forma síncrona. Cada função de redutor leva a Ação mais recente enviada para o estado atual. Ele determina se deve retornar um estado modificado ou o estado original.
-