Pra*_*yot 10 swift swiftui environmentobject
我知道EnvironmentObject属性包装器可用于将对象传递给视图。我有一个会话对象,我正在将其传递给我的视图。现在我需要将其传递到我的模型类之一(即非视图)。理想情况下,该模型(接收会话对象)被实例化为StateObject.
struct CreditDetailsView: View {
@EnvironmentObject var session: Session
@StateObject var transactionsModel = TransactionsModel(token: session.token)
Run Code Online (Sandbox Code Playgroud)
上面的代码将不起作用(可以理解),因为:
cannot use instance member 'session' within property initializer; property initializers run before 'self' is available
Run Code Online (Sandbox Code Playgroud)
关于如何将会话传递到 的任何建议TransactionsModel?
小智 4
.onAppear()尝试在子视图的 prop中初始化 StateObject ,如下所示:
struct CreditDetailsView: View {
@EnvironmentObject var session: Session
@StateObject var transactionsModel: TransactionModel?
var body: some View {
SomeChildView()
.onAppear(perform: {
transactionModel = TransactionModel(token: session.token)
})
}
}
Run Code Online (Sandbox Code Playgroud)
这样,当视图在屏幕上呈现时,变量就会被初始化。将 prop 添加到哪个子视图并不重要onAppear,只要它与父视图一起渲染即可。
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |