| name | swiftui-patterns |
| description | SwiftUI 架构模式,使用 @Observable 进行状态管理,视图组合,导航,性能优化,以及现代 iOS/macOS UI 最佳实践。 |
SwiftUI 模式
适用于 Apple 平台的现代 SwiftUI 模式,用于构建声明式、高性能的用户界面。涵盖 Observation 框架、视图组合、类型安全导航和性能优化。
何时激活
- 构建 SwiftUI 视图和管理状态时(
@State、@Observable、@Binding)
- 使用
NavigationStack 设计导航流程时
- 构建视图模型和数据流时
- 优化列表和复杂布局的渲染性能时
- 在 SwiftUI 中使用环境值和依赖注入时
状态管理
属性包装器选择
选择最适合的最简单包装器:
| 包装器 | 使用场景 |
|---|
@State | 视图本地的值类型(开关、表单字段、Sheet 展示) |
@Binding | 指向父视图 @State 的双向引用 |
@Observable 类 + @State | 拥有多个属性的自有模型 |
@Observable 类(无包装器) | 从父视图传递的只读引用 |
@Bindable | 指向 @Observable 属性的双向绑定 |
@Environment | 通过 .environment() 注入的共享依赖项 |
@Observable ViewModel
使用 @Observable(而非 ObservableObject)—— 它跟踪属性级别的变更,因此 SwiftUI 只会重新渲染读取了已变更属性的视图:
@Observable
final class ItemListViewModel {
private(set) items: [] []
isLoading
searchText
repository:
(: ()) {
.repository repository
}
() {
isLoading
{ isLoading }
items ( repository.fetchAll()) []
}
}