SwiftUI 中的属性
- Property - 一般数据展示,不需要同步数据修改操作
- @State - 数据修改需要同步 UI, 生命周期只局限于当前 View,一般修饰数据为结构体或枚举
- @ObservedObject - 修饰数据为引用类型,数据的生命周期可以根据情况灵活控制,通常情况下一个顶级视图对应一个 ObservedObject
- @StateObject - 修饰数据为引用类型,生命周期跟 View 保持一致,可看做 @State 和 @ObservedObject 的结合体
- @EnvironmentObject - 全局的数据绑定机制,生命周期与绑定到视图的生命周期一致
- @SceneStorage - View 级别的数据缓存,注意只需要针对需要缓存的数据进行缓存
- @AppStorage - App 级别的数据缓存,所有子视图都可以访问
- @Binding - 父子视图之间进行数据源共享,双向绑定,一般只接受处理值类型
View与View间的公用数据使用@State + @Binding。
多个View与Class间的公用数据:对View用@ObservedObject,让Class满足ObservableObject协议。
父View与子View对Class间的公用数据:父View用@ObservedObject,子View用@EnvironmentObject,Class满足ObservableObject协议
网友评论