前提・実現したいこと
onAppearで、Firestoreからデータを取ってくるfuncを使っているのですが、
NavigationLinkで次のページへ行ってから戻ってくる時と、
一つ前のページへ戻ってから再度本ページに飛ぶと、
元々取り込んでいたデータが保持された上、さらに追加でデータを取ってきてしまい、
表示されるデータが増えていってしまいます。
常に1回分しかデータを保持しないようにするにはどうすれば良いでしょうか。
どなたか、わかる方がいましたらご教示ください。
該当のソースコード
//このViewへNavigationLinkで移動する形になっており、前頁→本頁→また前頁→また本頁、といった遷移をすると、データが維持された上で、onAppearが実行されてしまう struct SomeView: View { var theme: String @ObservedObject var observed = Observer() var body: some View { ScrollView(showsIndicators: observed.status.isEmpty) { VStack { ForEach(self.observed.status, id: .self) {one in //OneViewの中にNavigationLinkが入っており、そこへ飛んだ後、またこの頁に戻ってくると、データが保持された上でonAppearが実行されてしまう OneView(one: one) } } } .onAppear{ self.observed.pickup(theme: self.theme) } } } }
試したこと
.onAppear{ if self.count == 0 { self.observed.pickup(theme: self.theme) self.count += 1 }
というように条件をつけてみましたが、次のページから戻ってくる時は制御できるものの、
前のページから再びくる時の制御はできませんでした。
あなたの回答
tips
プレビュー