我有一个带有Binding
的视图,如下所示:
struct MyView: View {
@Binding var myString: String
var body: some View {
VStack {
// Not important
}
.onReceive(myString.publisher) { receiveValue in
print(receiveValue)
}
}
}
和父视图:
struct ParentView: View {
@State var myString: String
var body: some View {
Button("Button") {
myString = "Foo"
}
MyView(myString: myString)
}
}
这里的想法是,每次绑定变量改变myString
时,接收器都会触发并打印新字符串,这确实有效,但有趣的是,当点击按钮时,新字符串的每个字符都作为一个单独的事件发布:
F
o
o
如果我把绑定变量 Package 在ObservedObject
中,这种情况就不会发生。我怎样才能让myString.publisher
一次发布整个String?
1条答案
按热度按时间ubby3x7f1#
请改用
onChange(of:)