firebase - SwiftUI:.onappear 未在第一个选项卡中显示来自 firebase 的数据
问题描述
在我的应用程序中,开始屏幕中的第一个选项卡不显示任何数据。选项卡的代码如下:
import SwiftUI
import FirebaseFirestore
import Firebase
import FirebaseFirestoreSwift
struct LibraryScreen: View {
@ObservedObject var viewModel = BookViewModel()
var body: some View {
VStack
{
List(viewModel.books){book in
Text(book.name)
}
}.onAppear(){
self.viewModel.fetchData()
print("Fetching books")
}
.navigationBarTitle("Library", displayMode: .inline)
}
}
struct LibraryScreen_Previews: PreviewProvider {
static var previews: some View {
LibraryScreen()
}
}
但是,当从另一个选项卡返回时,数据会按预期显示。有什么我应该代替的东西.onappear
吗?
编辑:只是为了澄清我希望viewModel.fetchData
在启动时显示数据而不必实现按钮,但是尽管打印语句显示在控制台中,但获取的数据没有。
解决方案
尝试这个。
List {
if !viewModel.books.isEmpty {
ForEach(viewModel.books) { book in {
Text(book.name)
}
}
}
推荐阅读
- php - PHP datetime 删除 6 小时
- python - 如何从 csv 文件中读取梵文字符并将其按原样写入 json?
- php - 如何仅在特定页面 ID 中使用 PHP 隐藏“添加到购物车”按钮?
- r - 如何将条件分数添加到 geom_tile?
- keras - 以下编码器-解码器模型如何生成与输入不同大小的输出?
- ios - 如何从以前的比例开始捏缩放手势?
- javascript - 如何在加载控件之前等待被创建
我有一个角色中的用户基本表,一旦完成 ajax 调用,就通过 jquery 创建。该表不仅是数据,它还在一列中添加了一个下拉列表,因此可以更改用户的角色。
如何等到表创建完成后尝试加载下拉菜单及其选项,然后设置为选中状态?如果我打开开发人员工具并逐步完成它,它会起作用,我假设 b/c 有足够的时间来绘制表格。
解决问题需要帮助,如果这是一种愚蠢的方法,请接受建议:)
桌子
<
- hadoop - 多个映射器将输出写入单个文件
- node.js - 错误:找不到模块“number-is-nan”
- mysql - 如何选择具有相同项目 sku 和 qty 的订单?