- @Binding改变不会触发SwiftUI的更新, 这只取决于根变量是否是类似@State, Publisher或者ObservableObject等
- @State可以再init中初始化
//这俩暂未发现不同 _stateVar = State(initialValue: settingItem.wrappedValue) _stateVar = State(wrappedValue: settingItem.wrappedValue)
- 使用@Binding希望内部组件更新
@Binding var settingItem: SparkFormItem{ willSet{ settingItemState = newValue // settingItemState是@State变量 } }
- @Binding定义的变量,在初始化时,不会改变wrapper值
@Binding var settingItem: SparkFormItem init(settingItem: Binding<SparkFormItem>) { _settingItem = settingItem // 这里_settingItem的初始化不会改变self.settingItem的值 }
- @environment和@environmentObject同样不会触发ui的刷新,需要Publisher或者ObservableObject等支持 @environment和@environmentObject可以在整个view结构中共享,但是遇到navigation link时就会断掉
文档信息
- 本文作者:Yawei Wang
- 本文链接:https://pfcstyle.github.io/2021/05/26/iOS-SwiftUI-property-wrapper-skill/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)