【发布时间】:2021-04-04 09:32:06
【问题描述】:
我想知道我是否可以通过 inout 而不是 Binding 使我的视图函数绑定自身,是否有可能为我们提供正确/更好的语法?知道我收到以下编译时错误:
Modifying state during view update, this will cause undefined behavior.
这对我来说是可以理解的,我想也许我在这项工作中使用了错误的语法。
PS:我完全了解 Binding 及其用例,如果我们也可以使用 inout,这个问题尝试找到答案。
func TextView(inPutValue: inout Bool) -> some View {
return Text("Hello")
.onTapGesture { inPutValue.toggle() }
}
用例:
struct ContentView: View {
@State private var isOn: Bool = true
var body: some View {
TextView(inPutValue: &isOn)
}
}
更新:
import SwiftUI
struct ContentView: View {
@State private var value: Int = Int() { didSet { print(value.description) } }
var body: some View {
Button("update State via inout") { inoutFunction(incomingValue: &value) }
}
}
func inoutFunction(incomingValue: inout Int) { incomingValue += 1 }
【问题讨论】: