Utilisation de l'État et des Dépendances

August 26, 2025 · View on GitHub

AppState fournit des outils puissants pour gérer l'état à l'échelle de l'application et injecter des dépendances dans les vues SwiftUI. En centralisant votre état et vos dépendances, vous pouvez vous assurer que votre application reste cohérente et maintenable.

Vue d'ensemble

  • État : Représente une valeur qui peut être partagée dans toute l'application. Les valeurs d'état peuvent être modifiées et observées dans vos vues SwiftUI.
  • Dépendance : Représente une ressource ou un service partagé qui peut être injecté et accédé dans les vues SwiftUI.

Fonctionnalités Clés

  • État Centralisé : Définissez et gérez l'état à l'échelle de l'application en un seul endroit.
  • Injection de Dépendances : Injectez et accédez à des services et des ressources partagés dans différents composants de votre application.

Exemple d'Utilisation

Définir l'État de l'Application

Pour définir l'état à l'échelle de l'application, étendez l'objet Application et déclarez les propriétés d'état.

import AppState

struct User {
    var name: String
    var isLoggedIn: Bool
}

extension Application {
    var user: State<User> {
        state(initial: User(name: "Guest", isLoggedIn: false))
    }
}

Accéder et Modifier l'État dans une Vue

Vous pouvez accéder et modifier les valeurs d'état directement dans une vue SwiftUI à l'aide du property wrapper @AppState.

import AppState
import SwiftUI

struct ContentView: View {
    @AppState(\.user) var user: User

    var body: some View {
        VStack {
            Text("Bonjour, \(user.name)!")
            Button("Se connecter") {
                user.name = "John Doe"
                user.isLoggedIn = true
            }
        }
    }
}

Définir des Dépendances

Vous pouvez définir des ressources partagées, comme un service réseau, en tant que dépendances dans l'objet Application. Ces dépendances peuvent être injectées dans les vues SwiftUI.

import AppState

protocol NetworkServiceType {
    func fetchData() -> String
}

class NetworkService: NetworkServiceType {
    func fetchData() -> String {
        return "Data from network"
    }
}

extension Application {
    var networkService: Dependency<NetworkServiceType> {
        dependency(NetworkService())
    }
}

Accéder aux Dépendances dans une Vue

Accédez aux dépendances dans une vue SwiftUI à l'aide du property wrapper @AppDependency. Cela vous permet d'injecter des services comme un service réseau dans votre vue.

import AppState
import SwiftUI

struct NetworkView: View {
    @AppDependency(\.networkService) var networkService: NetworkServiceType

    var body: some View {
        VStack {
            Text("Données : \(networkService.fetchData())")
        }
    }
}

Combiner État et Dépendances dans une Vue

L'état et les dépendances peuvent fonctionner ensemble pour créer une logique d'application plus complexe. Par exemple, vous pouvez récupérer des données d'un service et mettre à jour l'état :

import AppState
import SwiftUI

struct CombinedView: View {
    @AppState(\.user) var user: User
    @AppDependency(\.networkService) var networkService: NetworkServiceType

    var body: some View {
        VStack {
            Text("Utilisateur : \(user.name)")
            Button("Récupérer les données") {
                user.name = networkService.fetchData()
                user.isLoggedIn = true
            }
        }
    }
}

Meilleures Pratiques

  • Centraliser l'État : Gardez l'état de votre application en un seul endroit pour éviter la duplication et garantir la cohérence.
  • Utiliser les Dépendances pour les Services Partagés : Injectez des dépendances comme des services réseau, des bases de données ou d'autres ressources partagées pour éviter un couplage étroit entre les composants.

Conclusion

Avec AppState, vous pouvez gérer l'état à l'échelle de l'application et injecter des dépendances partagées directement dans vos vues SwiftUI. Ce modèle permet de garder votre application modulaire et maintenable. Explorez d'autres fonctionnalités de la bibliothèque AppState, telles que SecureState et SyncState, pour améliorer encore la gestion de l'état de votre application.


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.