Utilisation de Slice et OptionalSlice
August 26, 2025 · View on GitHub
Slice et OptionalSlice sont des composants de la bibliothèque AppState qui vous permettent d'accéder à des parties spécifiques de l'état de votre application. Ils sont utiles lorsque vous devez manipuler ou observer une partie d'une structure d'état plus complexe.
Vue d'ensemble
- Slice : Vous permet d'accéder et de modifier une partie spécifique d'un objet
Stateexistant. - OptionalSlice : Fonctionne de la même manière que
Slicemais est conçu pour gérer les valeurs optionnelles, par exemple lorsqu'une partie de votre état peut êtrenilou non.
Fonctionnalités Clés
- Accès Sélectif à l'État : N'accédez qu'à la partie de l'état dont vous avez besoin.
- Sécurité des Threads : Tout comme les autres types de gestion d'état dans AppState,
SliceetOptionalSlicesont thread-safe. - Réactivité : Les vues SwiftUI se mettent à jour lorsque la tranche de l'état change, garantissant que votre interface utilisateur reste réactive.
Exemple d'Utilisation
Utilisation de Slice
Dans cet exemple, nous utilisons Slice pour accéder et mettre à jour une partie spécifique de l'état — dans ce cas, le username d'un objet User plus complexe stocké dans l'état de l'application.
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("Nom d'utilisateur : \(username)")
Button("Mettre à jour le nom d'utilisateur") {
username = "NewUsername"
}
}
}
}
Utilisation d'OptionalSlice
OptionalSlice est utile lorsqu'une partie de votre état peut être nil. Dans cet exemple, l'objet User lui-même peut être nil, nous utilisons donc OptionalSlice pour gérer ce cas en toute sécurité.
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("Nom d'utilisateur : \(username)")
} else {
Text("Aucun nom d'utilisateur disponible")
}
Button("Définir le nom d'utilisateur") {
username = "UpdatedUsername"
}
}
}
}
Meilleures Pratiques
- Utilisez
Slicepour un état non optionnel : Si votre état est garanti comme non optionnel, utilisezSlicepour y accéder et le mettre à jour. - Utilisez
OptionalSlicepour un état optionnel : Si votre état ou une partie de l'état est optionnel, utilisezOptionalSlicepour gérer les cas où la valeur peut êtrenil. - Sécurité des Threads : Tout comme
State,SliceetOptionalSlicesont thread-safe et conçus pour fonctionner avec le modèle de concurrence de Swift.
Conclusion
Slice et OptionalSlice offrent des moyens puissants d'accéder et de modifier des parties spécifiques de votre état de manière thread-safe. En tirant parti de ces composants, vous pouvez simplifier la gestion de l'état dans des applications plus complexes, en veillant à ce que votre interface utilisateur reste réactive et à jour.
Cette traduction a été générée automatiquement et peut contenir des erreurs. Si vous êtes un locuteur natif, nous vous serions reconnaissants de contribuer avec des corrections via une Pull Request.