我已经使用Xcode 11.1在操场上隔离了这段代码:
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
@State var name: String = ""
var body: some View {
List {
Text(String(describing: name))
TextField("First Name", text: $name)
}.onReceive($name) { n in
print("hey \(n)")
}
}
}
let uv = ContentView()
PlaygroundPage.current.liveView = UIHostingController(rootView: uv)
除非我省略了onReceive部分,否则它将不会编译。错误消息是“无法推断闭包类型”,但是注释该方法似乎仅给我其他错误,而不是编译错误。
如何纠正此代码段?
由于无法删除此问题,因此我将在此处自行发布答案。
我遇到的问题是我试图将a@State
转换为Publisher
,并且onReceive
需要a Publisher
(由@jfuellert指出)。在后续问题(我删除的问题)中,用户@matt@ObservedObject
为我的用例指明了方向。
一种简单的方法@State
是利用以下事实,即状态var每次更改时,都会重新评估主体:
struct ContentView: View {
@State var name: String = ""
var body: some View {
print("hey \(name)")
return List {
Text(String(describing: name))
TextField("First Name", text: $name)
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句