0Pricing
Swift Academy · Leçon

@EnvironmentObject pour un état partagé

Injecter des modèles partagés dans des hiérarchies de vues profondes sans transmettre les propriétés à chaque niveau.

@EnvironmentObject pour un état partagé est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Bienvenue

`@EnvironmentObject` injecte un modèle partagé dans n'importe quelle vue de la hiérarchie sans transmission explicite — idéal pour un état à l'échelle de l'application, comme l'authentification de l'utilisateur ou les paramètres du thème.

Injecter dans la hiérarchie

```swift struct App: App { @StateObject var authModel = AuthModel() var body: some Scene { WindowGroup { RootView().environmentObject(authModel) } } } ```

Utiliser @EnvironmentObject

```swift struct ProfileView: View { @EnvironmentObject var auth: AuthModel var body: some View { Text("Hello, \(auth.username)!") } } // No init parameter needed — auto-injected from environment ```

Erreur au démarrage en l'absence d'un objet d'environnement

Si vous utilisez `@EnvironmentObject` sans injecter l'objet, l'application se termine avec une erreur à l'exécution : ``` Fatal error: No ObservableObject of type AuthModel found. A View.environmentObject(_:) must be attached to ancestor. ```

EnvironmentObject dans les aperçus

```swift #Preview { ProfileView().environmentObject(AuthModel.mock) } ```

Plusieurs objets d'environnement

```swift RootView() .environmentObject(authModel) .environmentObject(cartModel) .environmentObject(themeModel) ``` Chaque type est identifié par son type — il n'y a donc aucun conflit de noms.

Comparaison : @EnvironmentObject et @ObservedObject

• `@ObservedObject` — paramètre d'initialisation explicite, dépendances claires • `@EnvironmentObject` — aucun paramètre d'initialisation, injection implicite Privilégiez `@ObservedObject` pour plus de clarté ; utilisez `@EnvironmentObject` pour un état réellement global.

Injection dans les vues imbriquées

```swift View A (.environmentObject(model)) └── View B (@EnvironmentObject var model) ✓ └── View C (@EnvironmentObject var model) ✓ — inherits ```

@Environment pour les valeurs système

Ne confondez pas avec `@Environment` (sans le suffixe Object) : ```swift @Environment(\.colorScheme) var scheme // system dark/light @Environment(\.locale) var locale // current locale ```

Modèle concret : AppModel

```swift @Observable class AppModel { var isLoggedIn = false var username = "" var cart: [Item] = [] } ``` Approche moderne : injecter un modèle d'application `@Observable` unique à la racine.

Vérification rapide

Que se passe-t-il si vous utilisez `@EnvironmentObject` sans l'injecter ?

Récapitulatif

Points essentiels : • `.environmentObject(model)` injecte le modèle dans toute la sous-hiérarchie • `@EnvironmentObject var m: ModelType` — injection automatique, sans paramètre • Injection manquante = erreur à l'exécution • Injectez-le également toujours dans les aperçus • `@Environment(\.key)` pour les valeurs système (API différente) Ensuite : source unique de vérité.

Questions Fréquemment Posées

La leçon « @EnvironmentObject pour un état partagé » est-elle gratuite ?

Oui — le texte complet de « @EnvironmentObject pour un état partagé » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « @EnvironmentObject pour un état partagé » ?

Injecter des modèles partagés dans des hiérarchies de vues profondes sans transmettre les propriétés à chaque niveau. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « @EnvironmentObject pour un état partagé » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. @Binding : flux de données bidirectionnel
  2. @ObservableObject et @StateObject
  3. @EnvironmentObject pour un état partagé
  4. Source unique de vérité et flux unidirectionnel
← Retour à Swift Academy