簡體   English   中英

StateObject 屬性不會更新視圖,但 ObservedObject 會

[英]StateObject property doesn't update view but ObservedObject does

我將數據保存到另一個視圖中的 Realm DB 中,我使用@EnvironmentObject var modelData: DBViewModel並將它們加載到此視圖中

struct SelectedSinsList: View {
@StateObject var modelData = DBViewModel() //@ObservedObject works, as it always recreates the List when I open this view and values are updated
var body: some View {
    NavigationView {
        ScrollView{
            VStack(spacing: 15){
                ForEach(modelData.sins){sin in //..........

該行為表明您的視圖使用新數據進行更新的唯一原因是父視圖正在重繪,從而觸發了“無主”觀察到的 object 被重建。

State 和 StateObject 比 View 結構體的失效和重繪更持久。 要使用這些,您需要通過調用 self.objectWillChange.send() 將 StateObject 中的回調或發布者連接到其 objectWillChange 發布者

但是如果那個 DBViewModel 已經是一個 environmentObject,為什么要重新創建它呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM