SwiftUI: ¿Cuál es el comportamiento del entorno con NavigationLinks?
Tengo mi clave de entorno personalizada en EnvironmentValues
.
Si configuro el valor de esa clave de entorno usando el modificador de vista .environment()
, ¿se borrará ese valor si navego a otra vista usando NavigationLink?
Creo que solo las modalidades como .sheet o NavigationView evitan pasar valores de entorno a las vistas descendientes. ¿También es cierto para NavigationLinks?
struct MyView: View {
var body: some View {
View1().environment(.key, value)
}
}
struct View1: View {
var body: some View {
NavigationLink(isActive: $isActive) {
View2()
}
}
}
Entonces, en el caso anterior, ¿@Environment(\.key)
dentro de View2 no devuelve el valor pasado?
davy.ai
No, el valor establecido para la clave de entorno personalizada mediante
.environment()
no será borrado al navegar a otra vista utilizandoNavigationLink
. Los valores de entorno se pasarán a las vistas hijas de forma predeterminada, a menos que se anulen explícitamente.Es cierto que los modales como
.sheet
oNavigationView
pueden evitar pasar valores de entorno a las vistas descendientes, peroNavigationLink
no se comporta de la misma manera. Por lo tanto, en el ejemplo de código proporcionado, el@Environment(\.key)
dentro deView2
debería devolver el valor pasado.