Artık bağlantılı sinyallerle durum türetmeyi öğrendiğinize göre, Resource API ile asenkron verileri nasıl yöneteceğinizi keşfedelim. Resource API, yerleşik yükleme durumları, hata yönetimi ve istek yönetimi ile sinyalleri kullanarak asenkron işlemleri yönetmenin güçlü bir yolunu sağlar.
Bu aktivitede, verileri asenkron olarak yüklemek için resource() fonksiyonunu ve Resource API'yi çalışırken gösteren bir kullanıcı profili yükleyicisi oluşturarak asenkron işlemlerin farklı durumlarını nasıl yöneteceğinizi öğreneceksiniz.
-
resource fonksiyonunu ve API'yi içe aktarın
Mevcut içe aktarmalarınıza
resourceekleyin ve sahte API fonksiyonunu içe aktarın.// Add resource to existing imports import {Component, signal, computed, resource, ChangeDetectionStrategy} from '@angular/core'; // Import mock API function import {getUserData} from './user-api'; -
Kullanıcı verileri için bir resource oluşturun
Bileşen sınıfında, bir kullanıcı kimliği sinyaline dayalı olarak kullanıcı verilerini yükleyen bir resource oluşturan bir özellik ekleyin.
-
Resource ile etkileşim kurmak için metotlar ekleyin
Kullanıcı kimliğini değiştirmek ve resource'u yeniden yüklemek için metotlar ekleyin.
loadUser(id: number) { this.userId.set(id); } reloadUser() { this.userResource.reload(); }Params sinyalini değiştirmek otomatik olarak yeniden yüklemeyi tetikler veya
reload()ile manuel olarak yeniden yükleyebilirsiniz. -
Resource durumları için computed sinyaller oluşturun
Resource'un farklı durumlarına erişmek için computed sinyaller ekleyin.
isLoading = computed(() => this.userResource.status() === 'loading'); hasError = computed(() => this.userResource.status() === 'error');Resource'lar; 'loading', 'success' veya 'error' olabilen bir
status()sinyali, yüklenen veriler için birvalue()sinyali ve verinin mevcut olup olmadığını güvenle kontrol eden birhasValue()metodu sağlar. -
Düğmeleri bağlayın ve resource durumlarını görüntüleyin
Şablon yapısı zaten sağlanmış. Şimdi her şeyi bağlayın:
Bölüm 1. Düğmelere tıklama işleyicileri ekleyin:
<button (click)="loadUser(1)">Load User 1</button> <button (click)="loadUser(2)">Load User 2</button> <button (click)="loadUser(999)">Load Invalid User</button> <button (click)="reloadUser()">Reload</button>Bölüm 2. Yer tutucuyu resource durum yönetimi ile değiştirin:
@if (isLoading()) { <p>Loading user...</p> } @else if (hasError()) { <p class="error">Error: {{ userResource.error()?.message }}</p> } @else if (userResource.hasValue()) { <div class="user-info"> <h3>{{ userResource.value().name }}</h3> <p>{{ userResource.value().email }}</p> </div> }Resource, durumunu kontrol etmek için farklı metotlar sağlar:
isLoading()- veri getirilirken truehasError()- bir hata oluştuğunda trueuserResource.hasValue()- veri mevcut olduğunda trueuserResource.value()- yüklenen verilere erişimuserResource.error()- hata bilgisine erişim
Mükemmel! Artık sinyallerle Resource API'yi nasıl kullanacağınızı öğrendiniz. Hatırlanması gereken temel kavramlar:
- Resource'lar reaktiftir: Parametreler değiştiğinde otomatik olarak yeniden yüklenir
- Yerleşik durum yönetimi: Resource'lar
status(),value()veerror()sinyalleri sağlar - Otomatik temizleme: Resource'lar istek iptalini ve temizliği otomatik olarak yönetir
- Manuel kontrol: Gerektiğinde istekleri manuel olarak yeniden yükleyebilir veya iptal edebilirsiniz
Bir sonraki derste, input sinyalleri ile bileşenlere veri aktarmayı öğreneceksiniz!