Як підключити NgRx Store до застосунку?
Щоб підключити NgRx Store до Angular-застосунку, потрібно пройти кілька простих кроків:
1. Встановити NgRx
У терміналі:
bash
npm install @ngrx/store(пізніше можна додати й інші частини: @ngrx/effects, @ngrx/store-devtools, @ngrx/entity тощо)
2. Створити початковий стан і reducer
Приклад: counter.reducer.ts
ts
import { createReducer, on } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
export const initialState = 0;
export const counterReducer = createReducer(
initialState,
on(increment, state => state + 1),
on(decrement, state => state - 1),
on(reset, _ => 0)
);3. Створити actions
Приклад: counter.actions.ts
ts
import { createAction } from '@ngrx/store';
export const increment = createAction('[Counter] Increment');
export const decrement = createAction('[Counter] Decrement');
export const reset = createAction('[Counter] Reset');4. Додати Store в AppModule
ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { StoreModule } from '@ngrx/store';
import { counterReducer } from './counter.reducer';
@NgModule({
imports: [
BrowserModule,
StoreModule.forRoot({ count: counterReducer }) // підключаємо reducer
],
bootstrap: [/* ваш кореневий компонент */]
})
export class AppModule {}5. Використати Store в компоненті
ts
import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { increment, decrement, reset } from './counter.actions';
@Component({
selector: 'app-counter',
template: `
<button (click)="decrement()">-</button>
{{ count$ | async }}
<button (click)="increment()">+</button>
<button (click)="reset()">Reset</button>
`
})
export class CounterComponent {
count$ = this.store.select(state => state.count); // отримуємо значення
constructor(private store: Store<{ count: number }>) {}
increment() {
this.store.dispatch(increment());
}
decrement() {
this.store.dispatch(decrement());
}
reset() {
this.store.dispatch(reset());
}
}Висновок:
Ти підключаєш StoreModule в AppModule, створюєш actions і reducer та використовуєш store.select() і store.dispatch() у компонентах.
NgRx починає відстежувати стан і автоматично оновлює шаблон при змінах.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.