使用包装器允许我们将 EnvironmentObject 向下传递到 ObservedObject。不错的方法..
但是,如果您想在 ViewObject 中操作 userData 而不是每次都创建一个全新的 ViewObject 怎么办?
在我的应用程序中,我更改 EnvironmentObject 后重新创建了整个视图,但我不知道如何避免这种情况。
struct MyCoolView: View {
@EnvironmentObject var userData: UserData
var body: some View {
MyCoolInternalView(ViewObject(id: self.userData.UID))
}
}
struct MyCoolInternalView: View {
@EnvironmentObject var userData: UserData
@ObservedObject var viewObject: ViewObject
init(_ viewObject: ViewObject) {
self.viewObject = viewObject
}
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}