Menu
Coddy logo textTech

Obiekty środowiskowe

Część sekcji Wprowadzenie do SwiftUI ścieżki Swift w Coddy. Lekcja 41 z 50.

Przekazywanie obiektu przez każdy widok aż do tego, który go potrzebuje, staje się uciążliwe. Zamiast tego umieść go w środowisku, a każdy podrzędny widok będzie mógł go odczytać:

@StateObject private var cart = Cart()

var body: some View {
    NavigationStack {
        ShopView()
    }
    .environmentObject(cart)
}

Widok znajdujący się niżej deklaruje, czego potrzebuje, za pomocą @EnvironmentObject, bez wartości początkowej:

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

    var body: some View {
        Text("\(cart.count) in cart")
    }
}

ShopView nie wspomina o koszyku, ale znajdujący się w nim CartBadge nadal otrzymuje ten sam obiekt. Jeśli żaden widok nadrzędny nie dostarczy mu .environmentObject, aplikacja zatrzyma się z błędem, gdy zostanie wyświetlony CartBadge.

challenge icon

Wyzwanie

Średni

CartBadge powinien wyświetlać liczbę elementów we współdzielonym koszyku. Przekaż cart do VStack za pomocą .environmentObject i zmień CartBadge, aby odczytywał go za pomocą @EnvironmentObject. Po jednym stuknięciu plakietka powinna wyświetlać 1 in cart.

Spróbuj swoich sił

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do SwiftUI

Poćwicz samodzielnie: Edytor online SwiftUI