iOS SwiftUI:子视图@ObservedObject 中的数据流

iOS SwiftUI: Data Flow Flow in Subviews @ObservedObject

我的应用程序有更新问题。 我不太明白子视图之间的数据流是怎么回事。

这是我当前的结构

发生了什么:

每次我修改列表时,MainView 都会更新并触发 ChildView 的新重建,但 NephewView 不会更新

我想要的:

我想在每次 observedObject 获得更新时更新 Main、Child 和 NephewView 视图

问题:

我不明白为什么如果子视图重建,侄子不重建。

示例代码

class ViewModel: ObservableObject {

    let userData = UserData.shared

    var canceller: AnyCancellable?

    @Published var items: [Items]


    init() {
      items = []
      canceller = userData.objectWillChange
        .throttle(for: 5, scheduler: RunLoop.main, latest: true)
        .sink(receiveCompletion: { data  in
            DispatchQueue.main.async { [weak self] in
                guard let self = self else { return }
                self.items = data.items
            }
        },
        receiveValue: { _ in
            DispatchQueue.main.async { [weak self] in
                guard let self = self else { return }
                self.items = data.items
            }
        })
   }
 }

struct MainView: View {

  @ObservedObject var model = ViewModel()


  var body: some View {
      ChildView(items: model.items)
  }
}

struct ChildView: View {

  let items: [Items]


  var body: some View {
      NephewView(items: items)
  }
}

struct NephewView: View {

  let items: [Items]

  var body: some View {
      List...
  }
}

接收器工作正常,只是 UI 部分没有得到更新。 也许我更新发布者的方式不对?

您的主视图

 ChildView(items: $model.items)

您的子视图

struct ChildView: View {
  @Binding let items: [Items]
  var body: some View {
     List { 
     ForEach(self.items) { item in
           NephewView(items: item)
          }
        }
      }
    }

你的外甥观点

struct NephewView: View {
  @Binding let items: item

  var body: some View {
    // Your view logic goes here with single item
  }
}