The @RelayEnvironment
provides direct access to the current Relay.swift Environment.
Most of the time, you won't need to use this: the other property wrappers access the the current environment in the same way internally.
You may need this in order to pass on the correct environment to a view that won't inherit it normally. A common way this can happen is when presenting a sheet:
import SwiftUI
import RelaySwiftUI
struct ContentView: View {
@RelayEnvironment var environment: Relay.Environment
@State var isPresented: Bool
var body: some View {
Text("Some text")
.sheet(isPresented: $isPresented) {
MySheet()
.relayEnvironment(self.environment)
}
}
}
Using this property wrapper requires that another view higher in the tree has used relayEnvironment() to set the current environment for the tree. Otherwise, your app will crash.