ios - 何时重新创建 SwiftUI 中的工作表?
问题描述
有谁知道什么时候.sheet
应该重新渲染关闭?是否真的应该在整体中的任何东西body
导致更新时这样做,即使它不在层次结构中的远程?
例如,未更新cartItemModal
的@State
属性在哪里:
var body: some View {
VStack {
theCartView
// even putting the sheet outside of the cart view entirely, it still gets re-rendered
Text("").sheet(item: $cartItemModal) { (productWithCartItem) -> QuickAddView in
QuickAddView(viewModel: QuickAddViewModel(productDetails: productWithCartItem, cartAPIProvider: self.cartAPIProvider))
}
}
}
我的模态中的控件可以更新底层列表中的数据驱动theCartView
。数据实际上并不影响我的QuickAddView
模态,它是用它自己的结构呈现的。然而,该闭包再次被调用,我的模态被重新渲染。
在此处添加完整示例:
https://gist.github.com/sprynmr/66811b088ac50d9f297471d5c70d0eb3
我认为我的问题归结为:@State
视图中的瞬态属性与底层数据更改无关,或者通过.sheet
. 如果要在更新中的任何内容时随时重新创建这些内容,那么body
很多人可能会为他们的瞬态视图状态被重置而苦苦挣扎。
考虑一个计时器触发,它从服务器获取更新并更新显示 a 的列表.sheet
。工作表将被重新创建@State
并将被重置。
解决方案
您的工作表不会重新渲染,但每次您的工作表绑定到的任何内容发生突变时,都会重新评估它。这是预期的行为。
推荐阅读
- python - Sklearn Pipelines:值错误 - 预期的功能数量
- ios - 需要生成世界地图矩阵以及不同颜色的区域和位置标记
- excel - 如何使用 WPS office 或任何其他工具在每个不同列中创建等效于 explode() 的集合数据
- r - 我如何正确地将条形图和折线图重叠在一起
- sql-server - 将 650 万条记录从平面文件加载到 OleDb 目标(即数据库表)的性能更好
- macos - Powershell Core 读取文件元数据
- c++ - 使用单例模板时如何使用g ++编译多个cpp文件
- go - 如何使用 Golang 从 Azure eventthub 获取架构
- google-cloud-platform - 暂时禁用此应用的 Google 登录 - Google OAuth
- java - concatColumn 弹出 UnsupportedOperationException