EnvironmentObject
A linked View property that reads a `ObservableObject` supplied by an ancestor view that will automatically invalidate its view when the object changes.
State Management
Share Data between Views using @EnvironmentObject
class User: ObservableObject {
@Published var name = "Enes Karaosman"
}
// View 1
struct EditView: View {
@EnvironmentObject var user: User
var body: some View {
TextField("Name", text: $user.name)
}
}
// View 2
struct DisplayView: View {
@EnvironmentObject var user: User
var body: some View {
Text(user.name)
}
}
// Container View to demonstrate communication
struct DemoView: View {
let user = User()
var body: some View {
VStack {
EditView()//.environmentObject(user)
DisplayView()//.environmentObject(user)
}
// Since both views wrapped by same container
// We can bind here as well.
.environmentObject(user)
}
}Lets also create 2 dummy child view.
Now when we edit envTest (EnvironmentObject) in any child, the changes reflected everywhere it is used.

Last updated
Was this helpful?