SwiftUI的ObservableObject与EnvironmentObject应用

根据适用范围和存储状态的复杂度的不同,需要选取合适的方案。@State 和 @Binding 提供 View 内部的状态存储,它们应该是被标记为 private 的简单值类型,仅在内部使用。

ObservableObject 和 @ObservedObject 则针对跨越 View 层级的状态共享,它可以处理更复杂的数据类型,其引用类型的特点,也让我们需要在数据变化时通过某种手段向外发送通知 (比如手动调用 objectWillChange.send() 或者使用 @Published),来触发界面刷新。

对于“跳跃式”跨越多个 View 层级的状态,@EnvironmentObject 能让我们更方便地使用 ObservableObject,以达到简化代码的目的。

随着经验的积累,你会逐渐形成对于某个场景下应该使用哪种方式来管理数据和状态的直觉。在此之前,如果你纠结于选择使用哪种方式的话,从 ObservableObject 开始入手会是一个相对好的选择:如果发现状态可以被限制在同一个 View […]

发布了129 篇原创文章 · 获赞 11 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Batac_Lee/article/details/103875493