gpt4 book ai didi

由于 NavigationLink,SwiftUI onAppear 被多次调用

转载 作者:行者123 更新时间:2023-12-03 20:48:59 43 4
gpt4 key购买 nike

在导航链接内时,SwiftUI onAppear 被多次调用。在我提供的示例中,它被调用了 5 次。这也会触发它的 StateObject 初始值设定项也被调用 5 次。如果您注释掉导航链接,它会按预期执行。
这已经在 Xcode 12 GM 和 Xcode 12.2 以及 iOS 14 GM 和 iOS 14.2 beta 1 上进行了测试。也作为反馈 FB8721761 提交。

struct ContentView: View {
var body: some View {
NavigationLink(destination: Color.red, label: {
ImageView()
.frame(width: 166.66, height: 250)
.cornerRadius(10)
})
}
}

struct ImageView: View{
@StateObject private var downloader = Downloaded(url: URL(string: "https://image.tmdb.org/t/p/w342/TnOeov4w0sTtV2gqICqIxVi74V.jpg")!)

var body: some View{
Rectangle()
.onAppear{
print("Appeared")
}
}
}

class Downloaded: ObservableObject{
var cancellable: AnyCancellable?
let url: URL

init(url: URL){
self.url = url
download()
}

func download(){
cancellable = URLSession.shared.dataTaskPublisher(for: url)
.map(\.data)
.receive(on: DispatchQueue.main)
.eraseToAnyPublisher()
.sink(receiveCompletion: { _ in
print("Finished downloading")
}, receiveValue: {_ in})
}
}

最佳答案

我向 Apple 提交了反馈,这已在 iOS 14.2 beta 3 中得到解决。

关于由于 NavigationLink,SwiftUI onAppear 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63985514/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com