SwiftUI

SwiftUI:属性包装器@EnvironmentObject的

2024-09-13  本文已影响0人  喔牛慢慢爬

@EnvironmentObject 用于在多个视图之间共享状态,当前视图中与上层视图经环境传递的 ObservableObject 实例之间创建关联的属性包装器。 允许某个视图树中的所有子视图访问相同的对象,而无需显式传递。

作用:@EnvironmentObject用于在整个应用程序中共享全局环境对象。它允许在应用程序中的任何地方访问和使用该对象,而无需手动传递数据。在 SwiftUI 中,View 提供了 environmentObject(自定义的Object) 方法,来把某个 ObservableObject 的值注入到当前 View 层级及其子层级中去。在这个 View 的子层级中,可以使用 @EnvironmentObject 来直接获取这个绑定的环境值。@EnvironmentObject 修饰器是针对全局环境的。通过它,我们可以避免在初始 View 时创建 ObservableObject, 而是从环境中获取 ObservableObject。

应用场景

注意事项

使用示例

class UserSettings: ObservableObject {
    @Published var username = "Guest"
}

struct ParentView: View {
    @StateObject var settings = UserSettings()
    
    var body: some View {
        ChildView().environmentObject(settings)
    }
}

struct ChildView: View {
    @EnvironmentObject var settings: UserSettings
    
    var body: some View {
        Text("Username: \(settings.username)")
    }
}

@Environment与@EnvironmentObject区别

上一篇 下一篇

猜你喜欢

热点阅读