SwiftUI 视图参数未按预期更新

SwiftUI view parameter does not update as expected

我很好奇为什么视图的 .fullScreenCover 显示不能使用传入的参数正确更新,除非参数使用 @Binding 属性 包装器。这是错误还是预期的行为? fullScreenCover 显示的视图不是延迟生成的吗?

import SwiftUI

struct ContentView: View {
    @State private var showFullScreen = false
    @State private var message = "Initial Message"
    var body: some View {
        VStack {
            Button {
                self.message = "new message"
                showFullScreen = true
            } label: {
                Text("Show Full Screen")
            }

        }.fullScreenCover(isPresented: $showFullScreen) {
            TestView(text: message)
        }
    }
}

struct TestView: View {
    var text: String
    var body: some View {
       Text(text)
    }
}

有一个不同的fullScreenCover用于传递动态数据,例如

import SwiftUI

struct CoverData: Identifiable {
    var id: String {
        return message
    }
    let message: String
}

struct FullScreenCoverTestView: View {
    @State private var coverData: CoverData?
    
    var body: some View {
        VStack {
            Button {
                coverData = CoverData(message: "new message")
            } label: {
                Text("Show Full Screen")
            }

        }
        .fullScreenCover(item: $coverData, onDismiss: didDismiss) { item in
            TestView(text: item.message)
            .onTapGesture {
                coverData = nil
            }
        }
    }

    func didDismiss() {
        // Handle the dismissing action.
    }

}

struct TestView: View {
    let text: String
    
    var body: some View {
       Text(text)
    }
}

文档中的更多信息和示例:

https://developer.apple.com/documentation/SwiftUI/AnyView/fullScreenCover(item:onDismiss:content:)