Dieser Leitfaden befasst sich mit Angular Signals, einem modernen reaktiven Programmierparadigma, das die Zustandsverwaltung vereinfacht. Wir untersuchen ihre Kernfunktionalität, einschließlich beschreibbarer und berechneter Signale, und demonstrieren ihre Verwendung mit Effekten. Praktische Beispiele werden Ihr Verständnis festigen.
Winkelsignale verstehen
Winkelsignale sind ein reaktives Grundelement, das für einen vorhersehbareren und besser beherrschbaren Zustand entwickelt wurde. Im Gegensatz zu älteren Methoden (Observables, EventEmitters) bieten Signale einen saubereren Ansatz für reaktive Variablen und aktualisieren automatisch die Ansicht bei Zustandsänderungen.
Wichtige Signalattribute:
Schreibbare Signale: Die Grundlagen
Schreibbare Signale sind der grundlegende Baustein und repräsentieren den veränderlichen reaktiven Zustand.
Ein beschreibbares Signal erstellen:
Verwenden Sie die Funktion 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>
Beschreibbare Signalmethoden:
set(newValue)
: Weist direkt einen neuen Wert zu. this.counter.set(10);
update(callback)
: Aktualisierungen mithilfe einer Rückruffunktion. this.counter.update(val => val * 2);
mutate(callback)
: Mutiert Objekte oder Arrays direkt. this.arraySignal.mutate(arr => arr.push(5));
Berechnete Signale: Abgeleitete Werte
Berechnete Signale leiten ihren Wert von anderen Signalen ab und werden automatisch aktualisiert, wenn sich Abhängigkeiten ändern. Sie sind schreibgeschützt.
Definieren eines berechneten Signals:
Verwenden Sie die Funktion 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>
Beim Aktualisieren von price
oder quantity
wird totalPrice
automatisch neu berechnet.
Wirkungen: Umgang mit Nebenwirkungen
Effekte führen Nebenwirkungen aus (Protokollierung, API-Aufrufe, DOM-Manipulation), wenn sich Signale ändern.
Erstellen eines Effekts:
Verwenden Sie die Funktion 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>
Effektanwendungsfälle:
Vollständiges Beispiel: Eine Zähler-App
Diese Zähler-App demonstriert beschreibbare, berechnete Signale und Effekte:
<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>
Best Practices für Signale:
computed()
.update()
gegenüber mutate()
.Fazit
Angular Signals bieten einen modernen, effizienten Ansatz für die reaktive Zustandsverwaltung. Ihre Einfachheit und Fähigkeiten verbessern die Entwicklererfahrung und Anwendungsleistung und führen zu besser wartbarem und vorhersehbarem Angular-Code.
Das obige ist der detaillierte Inhalt vonWinkelsignale verstehen: Ein umfassender Leitfaden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!