首页 > 解决方案 > SwiftUI View 观察其从父 View 传递的属性

问题描述

我如何写来观察从父视图传递的属性?

struct ParentView: View {
    @State var prop = "a"

    var body: some View {
        ChildView(prop: prop)
    }
}

struct ChildView: View {
    var prop: String {    // When the "prop" changed, do something.
        didSet {
            print(prop)   // not work
        }
    }

    var body: some View {
        Text(prop)
    }
}

标签: swiftswiftui

解决方案


每次更改时都会创建一个具有新值的新ParentView实例。ChildViewprop@State var prop = "a"

您可以创建自定义初始化并检查新值:

struct ChildView: View {
    var prop: String
    
    init(prop: String) {
        self.prop = prop
        print(prop) // <-- here
    }
    
    var body: some View {
        Text(prop)
    }
}

推荐阅读