0

似乎某些 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)的包装器,并且我希望这些子级也能够访问环境。

4

0 回答 0