SwiftUI状态变量不呈现视图,除非在视图内部使用(修改器中的诗句)



很抱歉措辞糟糕,但在onAppear中,我正在更改State变量,但这不会重新呈现视图,除非我在视图中的某个位置使用该State变量。

如果用户没有登录,我试图弹出一个模态,但除非我把变量放在下面的视图中,否则它不会弹出

struct SearchView: View {
// Environment Variables
@EnvironmentObject var session: SessionStore
@State var sheetIsPresented: Bool = false
var body: some View {
NavigationView {
// Just having a line like this will cause it to work
if self.sheetIsPresented || !self.sheetIsPresented {}
}
.onAppear {
if self.session.userSession != nil {
self.sheetIsPresented = true
}
}
.sheet(isPresented: $sheetIsPresented) {
WelcomeSignInModal(sheetIsPresented: self.$sheetIsPresented)
}
}
}

您可以尝试以下演示:

class SessionStore: ObservableObject {
var userSession: String? = "session"
}
struct ContentView: View {
@EnvironmentObject var session: SessionStore
@State var sheetIsPresented: Bool = false
var body: some View {
NavigationView {
Text("SearchView")
}
.onAppear {
self.sheetIsPresented = self.session.userSession != nil
}
.sheet(isPresented: $sheetIsPresented) {
Text("WelcomeSignInModal")
}
}
}

使用Xcode 11.6、iOS 13.6 进行测试

最新更新