angular
  1. angular-introduction-to-ngrx

Angular Introduction to NgRx

NgRx is a state management library for Angular applications, inspired by Redux. It provides a way to manage the state of an application in a predictable and efficient way using a unidirectional data flow. In this article, we will introduce the basic concepts of NgRx and how it can be used in an Angular application.

Syntax

import { createAction, createReducer, on } from '@ngrx/store';

// Define an action
const increment = createAction('Increment');
const decrement = createAction('Decrement');

// Define a reducer
const counterReducer = createReducer(
  0,
  on(increment, (state) => state + 1),
  on(decrement, (state) => state - 1)
);

Example

import { Component } from '@angular/core';
import { Store } from '@ngrx/store';

import { increment, decrement } from './counter.actions';

@Component({
  selector: 'app-counter',
  template: `
    <button (click)="increment()">+</button>
    <span>{{ count }}</span>
    <button (click)="decrement()">-</button>
  `
})
export class CounterComponent {
  count$ = this.store.select(state => state.counter);

  constructor(private store: Store<{ counter: number }>) {}

  increment() {
    this.store.dispatch(increment());
  }

  decrement() {
    this.store.dispatch(decrement());
  }
}

Output

The above code will generate a counter component with two buttons, a text field to display the count, and the following actions:

  • increment(): increment the count by 1
  • decrement(): decrement the count by 1

Explanation

NgRx follows Redux, in which the application state is stored in a single immutable state tree. The state can only be modified by dispatching actions, which are plain JavaScript objects containing a type and a payload.

Reducers are pure functions that take the current state and an action and return a new state. Actions are dispatched using a dispatch function, which matches the action with the corresponding reducer and updates the state.

Use

NgRx can be used in Angular applications that require state management. It can help manage complex state, reduce coupling between components, and simplify testing.

Important points

  • NgRx is a state management library for Angular applications, inspired by Redux.
  • The state is stored in a single immutable state tree that can only be modified by dispatching actions.
  • Reducers are pure functions that take the current state and an action and return a new state.
  • NgRx can help manage complex state, reduce coupling between components, and simplify testing.

Summary

NgRx is a powerful state management library for Angular applications. It provides a predictable, efficient way to manage the state of an application using a unidirectional data flow. By following the Redux pattern, NgRx provides numerous benefits for managing the state of Angular applications.

Published on: