如何在 SwiftUI 中重新初始化视图但未重新计算主体并重新渲染视图?
例子
import SwiftUI
struct ContentView: View {
var body: some View {
SubView()
.padding()
}
}
struct SubView: View {
@State private var items = [Int]()
init() {
print("SubView init")
}
var body: some View {
Text("\(items.count)")
Button("Add item") { items.append(Int.random(in: 0..<10)) }
Divider()
SubSubView()
SubSubView()
}
}
struct SubSubView: View {
init() {
print("SubSubView init")
}
var body: some View {
Text("I'm a subview") (>> _breakpoint here_)
}
}
如果我在按钮上点击 4 次,则视图如下:
但是我们在控制台中有这个:
SubView init (>> app launch)
SubSubView init (>> app launch)
SubSubView init (>> app launch)
SubSubView init
SubSubView init
SubSubView init
SubSubView init
SubSubView init
SubSubView init
SubSubView init
SubSubView init
SubSubViewbody
属性不会重新计算(使用断点)。是否仅在视图依赖项发生任何更改时才重新渲染此 SubSubView,即使它再次重新初始化?