如果尝试直接从 body 更新状态,为什么既没有效果也没有错误?

问题描述 投票:0回答:1

我知道这是完全错误的,但我正在尝试理解 SwiftUI 框架。 直接在视图主体中设置状态时,为什么我没有收到警告、崩溃或效果?是否有一个合乎逻辑的解释为什么 SwiftUI 只是默默地忽略此状态更新?

struct IgnoredStateUpdate: View {
    @State var value = 1
    var body: some View {
        print("value before \(value)") // prints 1
        value = 2 // Warning, error or crash expected
        print("value after \(value)") // prints 1
        return Text("Hello World!")
    }
}
swiftui
1个回答
0
投票

这是不允许的,因为这里

@State
的目的是在
body
发生变化时重新渲染它。它可能会导致无限循环。我相信这就是为什么如果您尝试运行上述代码,编译器会打印出运行时警告:

在视图更新期间修改状态,这将导致未定义的行为。

© www.soinside.com 2019 - 2024. All rights reserved.