1

代码:

class AppStore: ObservableObject {
    @Published var settings = Settings()
}
struct Settings {
    var account = Account()
}
class Account {
    @Published username
}

@EnvironmentObject appStore = AppStore()
VStack {
    TextField("username", &appStore.settings.username)
    Button("Change") {
        appStore.settings.username += "a"
    }
}

发生了什么:

appStore.settings.username += "a"无法触发视图的更新。但是对 TextField 的输入可以触发视图的更新。

问题:

我明白为什么appStore.settings.username += "a"不能触发视图的更新。ObservableObject 只能观察 value 的变化,但是 account 是 refrence 类型的。所以当我们更改 account 的属性时,appStore 中的值没有变化。但是不知道为什么会出现第二种情况

4

0 回答 0