一 关键字:
@Binding:
@State 是值传递,和 @State 类似,@Binding 也是对属性的修饰,它做的事情是将值语义的属性“转换”为引用语义。
@State:
@State 修饰的值,在 SwiftUI 内部会被自动转换为一对 setter 和 getter,对这个属性进行赋值的操作将会触发 View 的刷新,它的 body 会被再次调用,底层渲染引擎会找出界面上被改变的部分,根据新的属性值计算出新的 View,并进行刷新。”
直白点:和rn的setState类似,单层级,少量数据
缺陷:“对于 @State 修饰的属性的访问,只能发生在 body 或者 body 所调用的方法中。你不能在外部改变 @State 的值”
@ObservedObject:修饰 ObservableObject:作用:从值变成对象
ObservableObject:要有协议的属性 let objectWillChange,或者有@Published修饰的属性,系统自动生成 let objectWillChange
@EnvironmentObject:相当于全局store,子view谁都可以读取,哪怕名字不一样
@Published :类似于这个结构体 声明 let objectWillChange,在@Published修饰的属性中,调用objectWillChange.send(),发送广播
// let objectWillChange = PassthroughSubject<Void,Never>()//记得published要注释掉,系统会自动生成
// var brain:CalculatorBrain = .left("0"){
// willSet{
// objectWillChange.send()
// }
// }