Uso de Slice y OptionalSlice
August 26, 2025 · View on GitHub
Slice y OptionalSlice son componentes de la biblioteca AppState que le permiten acceder a partes específicas del estado de su aplicación. Son útiles cuando necesita manipular u observar una parte de una estructura de estado más compleja.
Descripción General
- Slice: Le permite acceder y modificar una parte específica de un objeto
Stateexistente. - OptionalSlice: Funciona de manera similar a
Slicepero está diseñado para manejar valores opcionales, como cuando parte de su estado puede o no sernil.
Características Clave
- Acceso Selectivo al Estado: Acceda solo a la parte del estado que necesita.
- Seguridad de Hilos: Al igual que con otros tipos de gestión de estado en AppState,
SliceyOptionalSliceson seguros para hilos. - Reactividad: Las vistas de SwiftUI se actualizan cuando cambia el slice del estado, asegurando que su IU permanezca reactiva.
Ejemplo de Uso
Usando Slice
En este ejemplo, usamos Slice para acceder y actualizar una parte específica del estado, en este caso, el username de un objeto User más complejo almacenado en el estado de la aplicación.
import AppState
import SwiftUI
struct User {
var username: String
var email: String
}
extension Application {
var user: State<User> {
state(initial: User(username: "Guest", email: "guest@example.com"))
}
}
struct SlicingView: View {
@Slice(\.user, \.username) var username: String
var body: some View {
VStack {
Text("Nombre de usuario: \(username)")
Button("Actualizar Nombre de Usuario") {
username = "NewUsername"
}
}
}
}
Usando OptionalSlice
OptionalSlice es útil cuando parte de su estado puede ser nil. En este ejemplo, el objeto User en sí mismo puede ser nil, por lo que usamos OptionalSlice para manejar este caso de forma segura.
import AppState
import SwiftUI
extension Application {
var user: State<User?> {
state(initial: nil)
}
}
struct OptionalSlicingView: View {
@OptionalSlice(\.user, \.username) var username: String?
var body: some View {
VStack {
if let username = username {
Text("Nombre de usuario: \(username)")
} else {
Text("No hay nombre de usuario disponible")
}
Button("Establecer Nombre de Usuario") {
username = "UpdatedUsername"
}
}
}
}
Mejores Prácticas
- Use
Slicepara el estado no opcional: Si su estado está garantizado que no es opcional, useSlicepara acceder a él y actualizarlo. - Use
OptionalSlicepara el estado opcional: Si su estado o parte del estado es opcional, useOptionalSlicepara manejar los casos en que el valor pueda sernil. - Seguridad de Hilos: Al igual que con
State,SliceyOptionalSliceson seguros para hilos y están diseñados para funcionar con el modelo de concurrencia de Swift.
Conclusión
Slice y OptionalSlice proporcionan formas poderosas de acceder y modificar partes específicas de su estado de una manera segura para hilos. Al aprovechar estos componentes, puede simplificar la gestión del estado en aplicaciones más complejas, asegurando que su IU se mantenga reactiva y actualizada.
Esta traducción fue generada automáticamente y puede contener errores. Si eres un hablante nativo, te agradecemos que contribuyas con correcciones a través de un Pull Request.