似乎某些 SwiftUI 视图会创建新的环境上下文,例如NavigationLink
. 新视图中没有任何环境可用。
作为一种解决方法,我只是通过环境变量手动转发,如下所示:
struct ExampleView: View {
@EnvironmentObject var foo: UserStore
@EnvironmentObject var bar: UserStore
var body: some View {
NavigationLink(destination:
SomeOtherView()
.environmentObject(self.foo)
.environmentObject(self.bar)
) {
Text("Open View")
}
}
}
然而,这似乎被打破了,因为它违反了环境的目的。此外,它令人困惑,因为不清楚(或记录?)这些边界在哪里,并且当视图依赖于缺少的EnvironmentObject
.
有一个更好的方法吗?
同样,我想创建一个UIViewControllerRepresentable
可以包含 SwiftUI 子级(通过UIHostingController
)的包装器,并且我希望这些子级也能够访问环境。