swiftui - 嵌套 ObservableObject 中的 @Published var 仅在第二次更改后才更改。SwiftUI 错误?
问题描述
我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)")
...
}
解决方案
推荐阅读
- java - 更改现有 PDF 文档的方向(纵向/横向)
- numpy - Numpy - 为 3-d 网格上的所有网格点查找到测试点的 3-d 距离
- apache - WAMP3.1.3:禁止您无权访问此服务器上的 /sitename
- angular - Angular Cli 6 读取环境名称
- java - OKTA 与其他 SSO 的集成
- elasticsearch - function_score 与嵌套 score_modes?
- python - 找到两个数组 PLOT1 和 PLOT2 之间的最小距离,并存储该点所在的索引
- reverse-engineering - 这是哪种校验和算法?
- java - JSONobject 在 intellij 中有效,但在从命令行运行时无效
- python - 如何使用 SimpleRNN 构建 keras 角色级别模型