21. Working with SwiftUI State, Observable and Environment Objects
Earlier chapters have described how SwiftUI emphasizes a data driven approach to app development whereby the views in the user interface are updated in response to changes in the underlying data without the need to write handling code. This approach is achieved by establishing a publisher and subscriber binding between the data and the views in the user interface.
SwiftUI offers three options for implementing this behavior in the form of state properties, observable objects and environment objects, all of which provide the state that drives the way the user interface appears and behaves. In SwiftUI, the views that make up a user interface layout are never updated directly within code. Instead, the views are updated automatically based on the state objects to which they have been bound as they change over time.
This chapter will describe these three options and outline when they should be used. Later chapters (A SwiftUI...