1

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

4

1 に答える 1