Ce guide explore les signaux angulaires, un paradigme de programmation réactive moderne simplifiant la gestion des états. Nous examinerons leurs fonctionnalités de base, y compris les signaux inscriptibles et calculés, et démontrerons leur utilisation avec des effets. Des exemples pratiques consolideront votre compréhension.
Comprendre les signaux angulaires
Les signaux angulaires sont une primitive réactive conçue pour un état plus prévisible et gérable. Contrairement aux anciennes méthodes (Observables, EventEmitters), les signaux offrent une approche plus propre des variables réactives, mettant automatiquement à jour la vue sur les changements d'état.
Attributs clés du signal :
Signaux inscriptibles : les bases
Les signaux inscriptibles sont l'élément fondamental, représentant l'état réactif mutable.
Création d'un signal inscriptible :
Utilisez la fonction signal()
:
<code class="language-typescript">import { signal } from '@angular/core'; export class CounterComponent { counter = signal(0); increment() { this.counter.update(val => val + 1); } decrement() { this.counter.update(val => val - 1); } }</code>
Méthodes de signal inscriptible :
set(newValue)
: Attribue directement une nouvelle valeur. this.counter.set(10);
update(callback)
: Mises à jour via une fonction de rappel. this.counter.update(val => val * 2);
mutate(callback)
: mute directement des objets ou des tableaux. this.arraySignal.mutate(arr => arr.push(5));
Signaux calculés : valeurs dérivées
Les signaux calculés tirent leur valeur d'autres signaux, se mettant automatiquement à jour lorsque les dépendances changent. Ils sont en lecture seule.
Définir un signal calculé :
Utilisez la fonction computed()
:
<code class="language-typescript">import { signal, computed } from '@angular/core'; export class PriceCalculator { price = signal(100); quantity = signal(2); totalPrice = computed(() => this.price() * this.quantity()); }</code>
La mise à jour price
ou quantity
recalcule automatiquement totalPrice
.
Effets : gérer les effets secondaires
Les effets exécutent des effets secondaires (journalisation, appels API, manipulation DOM) lorsque les signaux changent.
Créer un effet :
Utilisez la fonction effect()
:
<code class="language-typescript">import { signal, effect } from '@angular/core'; export class EffectExample { counter = signal(0); constructor() { effect(() => console.log('Counter:', this.counter())); } increment() { this.counter.update(val => val + 1); } }</code>
Cas d'utilisation des effets :
Exemple complet : une application de compteur
Cette application de compteur présente des signaux et des effets inscriptibles et calculés :
<code class="language-typescript">import { Component, signal, computed, effect } from '@angular/core'; @Component({ selector: 'app-counter', template: ` <div> <p>Counter: {{ counter() }}</p> <p>Double: {{ doubleCounter() }}</p> <button (click)="increment()">Increment</button> <button (click)="decrement()">Decrement</button> </div> ` }) export class CounterComponent { counter = signal(0); doubleCounter = computed(() => this.counter() * 2); constructor() { effect(() => console.log('Counter changed:', this.counter())); } increment() { this.counter.update(val => val + 1); } decrement() { this.counter.update(val => val - 1); } }</code>
Meilleures pratiques en matière de signal :
computed()
.update()
plutôt que mutate()
.Conclusion
Les signaux angulaires offrent une approche moderne et efficace de la gestion des états réactifs. Leur simplicité et leurs capacités améliorent l'expérience des développeurs et les performances des applications, conduisant à un code angulaire plus maintenable et plus prévisible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!