禁止为 ObservableObject 中的@Published 变量发送事件
Disable sending events for @Published variables in the ObservableObject
我有问题,UI 从零更新到某个数字时很难看。 问题是在删除所有项目并将新项目添加到数组时 UI 得到更新 因为此数组标有 @Published属性包装器。更详细的问题解释:
- 在第 1 阶段(在代码快照中标记)从列表中删除项目。
- 在这种情况下,UI 得到更新并在 UI 更新中计数为零。
- 一段时间后,获取完成并将新项目添加到数组中
(第 2 阶段)。
- 然后 UI 获取新项目计数的更新。
- 问题是 UI.
中从零到某个数字的丑陋计数更新
这里有没有一种方法可以为标有@Published 属性 包装器的 class 成员禁用分发事件?
class ItemsProvider: ObservableObject {
@Published var items: [Item] = []
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
self.items.removeAll() // 1. Removing old items.
query.getDocuments { (result, error) in
result?.forEach {
self.items.append(try? [=10=].data(as: Item.self)) // 2. Adding new items.
}
completion(error)
}
}
}
不要对 items
执行部分更新。在设置 items
.
之前计算整个新数组
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
query.getDocuments { (result, error) in
self.items = result?.compactMap { try? [=10=].data(as: Item.self) } ?? []
completion(error)
}
}
我有问题,UI 从零更新到某个数字时很难看。 问题是在删除所有项目并将新项目添加到数组时 UI 得到更新 因为此数组标有 @Published属性包装器。更详细的问题解释:
- 在第 1 阶段(在代码快照中标记)从列表中删除项目。
- 在这种情况下,UI 得到更新并在 UI 更新中计数为零。
- 一段时间后,获取完成并将新项目添加到数组中 (第 2 阶段)。
- 然后 UI 获取新项目计数的更新。
- 问题是 UI. 中从零到某个数字的丑陋计数更新
这里有没有一种方法可以为标有@Published 属性 包装器的 class 成员禁用分发事件?
class ItemsProvider: ObservableObject {
@Published var items: [Item] = []
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
self.items.removeAll() // 1. Removing old items.
query.getDocuments { (result, error) in
result?.forEach {
self.items.append(try? [=10=].data(as: Item.self)) // 2. Adding new items.
}
completion(error)
}
}
}
不要对 items
执行部分更新。在设置 items
.
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
query.getDocuments { (result, error) in
self.items = result?.compactMap { try? [=10=].data(as: Item.self) } ?? []
completion(error)
}
}