이 가이드에서는 상태 관리를 단순화하는 최신 반응형 프로그래밍 패러다임인 Angular Signals를 살펴봅니다. 쓰기 가능 및 계산된 신호를 포함한 핵심 기능을 살펴보고 효과와 함께 사용하는 방법을 보여 드리겠습니다. 실제 사례를 통해 이해가 더욱 깊어질 것입니다.
각신호의 이해
Angular Signals는 보다 예측 가능하고 관리하기 쉬운 상태를 위해 설계된 반응형 기본 요소입니다. 이전 방법(Observables, EventEmitters)과 달리 Signals는 반응 변수에 대한 더 깔끔한 접근 방식을 제공하여 상태 변경에 대한 보기를 자동으로 업데이트합니다.
주요 신호 속성:
쓰기 가능한 신호: 기본
쓰기 가능한 신호는 변경 가능한 반응 상태를 나타내는 기본 구성 요소입니다.
쓰기 가능한 신호 생성:
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>
쓰기 가능한 신호 방법:
set(newValue)
: 새로운 값을 직접 할당합니다. this.counter.set(10);
update(callback)
: 콜백 함수를 사용하여 업데이트합니다. this.counter.update(val => val * 2);
mutate(callback)
: 객체나 배열을 직접 변경합니다. this.arraySignal.mutate(arr => arr.push(5));
계산된 신호: 파생 값
계산된 신호는 다른 신호에서 값을 파생하며 종속성이 변경되면 자동으로 업데이트됩니다. 읽기 전용입니다.
계산된 신호 정의:
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>
price
또는 quantity
을 업데이트하면 totalPrice
이 자동으로 다시 계산됩니다.
효과: 부작용 관리
Effect는 신호가 변경되면 부작용(로깅, API 호출, DOM 조작)을 실행합니다.
효과 만들기:
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>
효과 사용 사례:
전체 예: 카운터 앱
이 카운터 앱은 쓰기 가능하고 계산된 신호 및 효과를 보여줍니다.
<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>
신호 모범 사례:
computed()
을 선호합니다.update()
보다 mutate()
을 선호합니다.결론
Angular Signals는 반응 상태 관리에 대한 현대적이고 효율적인 접근 방식을 제공합니다. 이들의 단순성과 기능은 개발자 경험과 애플리케이션 성능을 향상시켜 유지 관리 및 예측 가능성을 더욱 높여줍니다.
위 내용은 각도 신호 이해: 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!