@State
の場合、2回目以降に作られたインスタンスって本当に捨てられてるんですね。ためしにUUID持たせたら更新されるかと思ったらされませんでした。 import SwiftUI import Observation struct ContentView: View { @State var count = 0 var body: some View { VStack { Text(count.description) Button { count += 1 print("count: \(count)") } label: { Text("count") } ChildView() } } } struct ChildView: View { @State var viewModel = ChildViewModel() var body: some View { Text("child: \(viewModel.uuid)") } } @MainActor @Observable final class ChildViewModel { var uuid = UUID() init() { print("init \(uuid)") } deinit { print("deinit") } }
(edited)