object Environment
Termasuk bagian Pengenalan SwiftUI dalam perjalanan Swift di Coddy. Pelajaran 41 dari 50.
Meneruskan object melalui setiap tampilan hingga sampai ke tampilan yang membutuhkannya bisa merepotkan. Masukkan object itu ke dalam environment, lalu setiap tampilan di bawahnya dapat membacanya:
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}Sebuah view di bagian bawah menyatakan hal yang dibutuhkannya dengan @EnvironmentObject, tanpa nilai awal:
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView tidak pernah menyebut keranjang, tetapi CartBadge di dalamnya tetap mendapatkan object yang sama. Jika tidak ada view di atasnya yang menyediakan object tersebut dengan .environmentObject, aplikasi akan berhenti dengan error saat CartBadge ditampilkan.
Tantangan
SedangCartBadge harus menampilkan jumlah item di keranjang bersama. Berikan cart ke VStack dengan .environmentObject, lalu ubah CartBadge agar membacanya dengan @EnvironmentObject. Badge harus menampilkan 1 in cart setelah satu ketukan.
Coba sendiri
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengenalan SwiftUI
9Berbagi Data
property @Bindingobject yang Dapat Diamatiobject EnvironmentRingkasan: Penghitung LangkahLatihan sendiri: Playground SwiftUI