환경 객체
Coddy Swift 여정의 SwiftUI 입문 섹션에 포함된 레슨. 50개 중 41번째.
필요한 뷰에 도달할 때까지 모든 뷰를 거쳐 객체를 전달하는 일은 번거로워집니다. 대신 객체를 환경에 넣으면, 그 아래에 있는 모든 뷰에서 객체를 읽을 수 있습니다:
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}더 아래에 있는 뷰는 초기값 없이 @EnvironmentObject를 사용하여 필요한 것을 선언합니다.
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView는 장바구니를 전혀 언급하지 않지만, 그 안의 CartBadge는 여전히 동일한 객체를 받습니다. 위쪽의 뷰에서 .environmentObject를 제공하지 않으면 CartBadge가 표시될 때 앱이 오류와 함께 중지됩니다.
챌린지
중급CartBadge는 공유된 장바구니의 수량을 표시해야 합니다. .environmentObject를 사용하여 VStack에 cart를 제공하고, CartBadge가 @EnvironmentObject로 이를 읽도록 변경하세요. 한 번 탭한 후 배지에는 1 in cart가 표시되어야 합니다.
직접 해보기
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
SwiftUI 입문의 모든 레슨
직접 연습해 보세요: Swift 플레이그라운드