Kurs Angular · Moduł 10: Zarządzanie stanem

Kiedy używać State Management?

2 min czytania ·
W tej lekcji4

Bez biblioteki (Signals/Services)

Używaj gdy:

  • Mały/średni projekt
  • Stan głównie lokalny w komponentach
  • Proste współdzielenie między kilkoma komponentami
  • Zespół nowy w Angular
// Prosty service ze Signals
@Injectable({ providedIn: 'root' })
export class CartService {
  private items = signal<CartItem[]>([]);
  readonly cartItems = this.items.asReadonly();
  readonly total = computed(() =>
    this.items().reduce((sum, item) => sum + item.price, 0)
  );

  addItem(item: CartItem): void {
    this.items.update(items => [...items, item]);
  }
}

NgRx SignalStore

Używaj gdy:

  • Średni projekt z rosnącą złożonością
  • Chcesz korzystać z Signals
  • Potrzebujesz struktury, ale nie pełnego Reduxa
  • Preferujesz funkcyjne podejście

Klasyczny NgRx

Używaj gdy:

  • Duży, złożony projekt
  • Wiele źródeł danych i efektów ubocznych
  • Potrzebujesz DevTools do debugowania
  • Zespół doświadczony z Redux/NgRx

Podsumowanie

RozwiązanieZłożonośćBoilerplateDevToolsSignals
Services + SignalsNiskaMinimalNieTak
SignalStoreŚredniaMałyTakTak
NgRx StoreWysokaDużyTakNie*

*NgRx ma selectSignal() do integracji

// NgRx z Signals
@Component({...})
export class MyComponent {
  private store = inject(Store);

  // Observable → Signal
  samurai = this.store.selectSignal(selectAllSamurai);
  loading = this.store.selectSignal(selectLoading);
}

Hasła z dokumentacji w tej lekcji

Widzisz błąd w tej lekcji?

Sprawdź się

Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.

  1. 1. Które rozwiązanie state management jest zalecane dla małego projektu z głównie lokalnym stanem?

  2. 2. Do czego służy metoda store.selectSignal(selektor) w klasycznym NgRx?

To 2 z 4 pytań do tej lekcji. Pozostałe rozwiążesz w grze.

Zadania praktyczne w grze

  • Układanie w pionie

    Uporządkuj rozwiązania state management od najmniejszej do największej złożoności i boilerplate:

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby zbudować przypisanie zamieniające selektor NgRx na Signal w komponencie:

Przydatne artykuły