SwiftUI 更新数组状态不更新视图

SwiftUI updating array state doesn't update view

这是我的测试代码:

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])
            }
        }
    }
}

当按下 'append' 按钮时,List 视图没有更新。 我做错了吗?

我认为这不是创建 List 视图的正确方法。这是一个示例

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

仅当提供的数据是常量时才可以使用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)
            }
        }
    }
}