我将Store1:ObservableObject
放入GlobalStore2:ObservableObject
中,并在field1
中使用field2
和MultiStoresDemo2:View
。
我在A
中键入field1
字符,field2
不会在View
中重绘。
我在B
中输入field1
字符,field2
仅显示A
字符。
这是SwiftUI错误吗?
我写了一些代码来演示如何重现它。
final class GlobalStore2: ObservableObject {
static let shared = GlobalStore2()
@Published var store1 = Store1()
}
final class Store1: ObservableObject {
static let shared = Store1()
@Published var field1 = "" {
didSet {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.field2 = self.field1
}
}
}
@Published var field2 = ""
}
struct MultiStoresDemo2: View {
@ObservedObject var store = GlobalStore2.shared
var body: some View {
VStack {
TextField("field1", text: $store.store1.field1)
Text("field2 \(store.store1.field2)")
}
}
}
如果我像下面那样更改代码,它将起作用
struct MultiStoresDemo2: View {
@ObservedObject var store1 = Store1.shared
...
Text("field2 \(Store1.shared.field2)")
Text("field2 \(store1.field2)")
...
}