Tutoriels

Le contexte React ne traverse pas la frontière d'un îlot

Composer un composant à parties dans un fichier .astro casse le build ; l'assemblage doit vivre du côté React.

IntermédiaireArticle4 étapes

Un composant à parties — accordéon, popover, onglets — partage son état par un contexte React. Écrit dans un fichier .astro, avec la directive d’hydratation sur la racine, il lève une erreur au build : les parties ne trouvent pas le contexte de leur racine.

1. Voir ce qu’une directive délimite

client:load ne rend pas la page réactive : elle déclare un îlot, dont la racine est le composant qui porte la directive. Les enfants écrits dans le .astro sont rendus par Astro, au build, hors de cet arbre React. Ils ne descendent donc d’aucun fournisseur de contexte — il n’y a pas d’arbre commun où le chercher.

2. Assembler du côté React

L’assemblage se met dans un seul fichier .tsx : la racine et ses parties y sont un arbre React, et c’est ce fichier qui porte la directive. La page ne voit plus qu’un composant.

3. Ne passer que des données sérialisables

Les propriétés d’un îlot traversent la frontière en JSON. Un tableau d’objets {label, value} passe ; une fonction de rendu, non. La contrainte est bienvenue : elle pousse l’assemblage vers le fichier React et les données vers la page.

4. Refuser l’îlot quand un élément natif suffit

La règle inverse compte autant. Un panneau qui s’ouvre et se ferme est un <details> : il n’a besoin d’aucun script, reste dans le HTML livré, et s’imprime déplié. Un popover, lui, se positionne, se ferme au clic extérieur et annonce son état — trois comportements qu’aucun élément natif ne rend. On paie une racine React pour un comportement, jamais pour l’uniformité.

Agir

Thème sombreFixer l'apparence du sitesetTheme({theme:"dark"})
Thème clairFixer l'apparence du sitesetTheme({theme:"light"})
Thème du systèmeSuivre à nouveau la préférence du systèmesetTheme({theme:"system"})
Passer le site en anglaisEnglishsetLocale({locale:"en"})
Labs — ProduitFiltrer les Labs par typefilterLabs({type:"Produit"})
Labs — PrototypeFiltrer les Labs par typefilterLabs({type:"Prototype"})
Labs — RechercheFiltrer les Labs par typefilterLabs({type:"Recherche"})
Labs — Réinitialiser les filtresRetirer tous les filtres des LabsfilterLabs({reset:true})
Journal — IngénierieFiltrer le Journal par catégoriefilterJournal({category:"Ingénierie"})
Journal — SécuritéFiltrer le Journal par catégoriefilterJournal({category:"Sécurité"})
Journal — Agent-NativeFiltrer le Journal par catégoriefilterJournal({category:"Agent-Native"})
Journal — StudioFiltrer le Journal par catégoriefilterJournal({category:"Studio"})
Journal — Réinitialiser les filtresRetirer tous les filtres du JournalfilterJournal({reset:true})
Tutoriels — DébutantFiltrer les tutoriels par niveaufilterTutorials({level:"Débutant"})
Tutoriels — IntermédiaireFiltrer les tutoriels par niveaufilterTutorials({level:"Intermédiaire"})
Tutoriels — AvancéFiltrer les tutoriels par niveaufilterTutorials({level:"Avancé"})
Tutoriels — Réinitialiser les filtresRetirer tous les filtres des tutorielsfilterTutorials({reset:true})

Services

DiscoveryCadrer le produit avant d'écrire la première ligne, pour que le budget serve à construire et pas à corriger.openService({service:"discovery"})
Design produitUne interface qui se tient, portée par un design system que vos développeurs peuvent faire vivre sans nous.openService({service:"design"})
Développement webUne application web rapide et tenue dans le temps, avec les tests et la chaîne de livraison qui vont avec.openService({service:"web"})
Développement mobileUne application iOS et Android depuis une seule base de code, publiée sur les deux stores.openService({service:"mobile"})
Infrastructure & sécuritéUne infrastructure décrite en code, et un accès Zero Trust qui ne repose pas sur un SMS.openService({service:"infrastructure"})
Maintenance & évolutionUn produit qui reste à jour, surveillé et corrigé, avec quelqu'un qui répond quand ça casse.openService({service:"maintenance"})
Conseil Architecture Agent-NativeRendre un produit existant pilotable par un agent, sans le réécrire — et sans lui ouvrir plus qu'il ne faut.openService({service:"agent-native"})

Naviguer

YorroStudio d'ingénierie produit à Abidjan et Paris. On conçoit, on code, on livre.navigate({page:"home"})
ServicesConstruire un produit de bout en bout, ou conseiller une équipe sur son architecture agent-native.navigate({page:"services"})
LabsCe que le studio a construit : produits, prototypes et recherches, avec leur avancement réel.navigate({page:"labs"})
TutorielsDes guides pas-à-pas tirés de vrais projets, réunis en parcours par sujet.navigate({page:"tutorials"})
JournalLes notes et les prises de position du studio.navigate({page:"journal"})
ContactDécrivez votre projet ; on répond avec un cadrage, pas avec un devis type.navigate({page:"contact"})
À proposQui tient le studio, comment il travaille, et ce qu'il refuse de faire.navigate({page:"about"})
↑↓ naviguer↵ exécuteréchap fermerActions unifiées