ビューは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 は、再初期化されたとしても、ビューの依存関係に変更がある場合にのみ再レンダリングされますか?