【问题标题】:SwiftUI changing environment object re-created observed object in same viewSwiftUI 更改环境对象在同一视图中重新创建观察对象
【发布时间】:2021-08-16 08:51:07
【问题描述】:

所以,我有几个步骤,最后一个包含 EnvironmentObjectObservedObject。问题是,当我尝试修改 EnvironmentObject (lane 68) 时,它会重新创建 ObservedObject。 谁能解释我为什么会这样?有什么解决方案可以让我的 ObservedObject 保持原始状态?

据我所知,可以将 ObservedObject 更改为 StateObject,但我使用的是 iOS 13+,所以...我需要其他解决方案。

【问题讨论】:

    标签: swiftui environment combine observedobject environmentobject


    【解决方案1】:

    第 47 行 - 重新评估正文,因此创建了 ObservedStuff 的新实例,因此将其作为属性并传入,就像

    struct TestView_A: View {
       ...
       private let model = ObservedStuff()
    
       var body: some View {
          NavigationLink(destination: TestView_B(viewModel: self.model) ...
       }
    }
    

    【讨论】:

    • 问题,但如果我将 if 从第 47 车道移除并将其放在第 54 车道上,它仍然会被评估?
    • 是的,当然,因为TestView_B 是在那个地方重新创建的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多