首页 > 解决方案 > SwiftUI 更新数组状态不会更新视图

问题描述

这是我的测试代码:

struct ArrView: View {
    @State var arr: [String] = ["first", "second"]
    var body: some View {
        VStack {
            Button("append") {self.arr.append("item\(self.arr.count)")}
            List(arr.indices) {row in
                Text(self.arr[row])
            }
        }
    }
}

当按下“附加”按钮时,List视图没有更新。我做错了吗?

标签: swiftswiftuiswiftui-list

解决方案


仅当提供的数据是常量时才能使用ForEach<Range>(),否则需要显式使用ForEach(_:id:content:)并提供id,如下所示:

struct ArrView: View {
    @State var arr: [String] = ["first", "second"]
    var body: some View {
        VStack {
            Button("append") {self.arr.append("item\(self.arr.count)")}
            List(arr, id: \.self) { item in
                Text(item)
            }
        }
    }
}

推荐阅读