渐进式编程课
SwiftUI 目录
第 7 课2026.09.09

把共享进度模型提供给较深层子视图,避免逐层传递参数。

第 7 课:Environment注入共享模型

  • 日期:2026-09-09
  • 课程序号:第 7 课
  • 知识点:environment 与 @Environment

用途

把共享进度模型提供给较深层子视图,避免逐层传递参数。

核心概念

祖先视图用 environment 注入可观察模型,后代通过 @Environment 读取同一实例。

最小代码或操作示例

swift
struct ProgressButton: View {
    @Environment(Progress.self) private var progress
    var body: some View {
        Button("增加") { progress.count += 1 }
    }
}

// 父视图中:ProgressButton().environment(progress)

3~5 分钟练习

增加一个后代 Text,从环境模型显示 count。

参考答案

在后代声明同样的 @Environment(Progress.self),再显示 Text("\(progress.count)")。

与上一课的联系

上一课建立可观察共享模型;本课学习把该单一实例注入更深的视图层级。