SwiftUI数据流:@Binding双向绑定

双向绑定,用于父子视图的双向传递。修改子视图的Binding值,会触发父视图的State改变重新渲染body。修改父视图的State的值同样也会重新通过Binding传递给子视图,触发重新渲染body。

原理图:

SwiftUI数据流:@Binding双向绑定_第1张图片
image.png

相关代码

struct ContentView: View{
    @State private var num:Int = 0;
    
    var body: some View{
        //        Text("hello World")
        VStack{
            //添加一个$前缀,就可以将State转为Binding。
            Stepper("计数器", value:$num).padding(50)
            //self.$subCounter.wrappedValue”的用法,
            //Binding对象是一个Binding类型的变量,当只需要使用值的时候,需要访问其.warppedValue属性来访问里面包裹的值。
            Text("\(self.$num.wrappedValue)")//self.num 
        }
       
    }
}


struct BindingTestView: View{
    //双向绑定,用于父子视图的双向传递。修改子视图的Binding值,会触发父视图的State改变重新渲染body。
    //反向亦然
    @Binding var subCounter:Int
    //@State private var num: Int = 0
    var body: some View{
        VStack{
            Stepper("计数器", value: $subCounter)
            Text("\(subCounter)")
        }
       
    }
}

你可能感兴趣的:(SwiftUI数据流:@Binding双向绑定)