Terrain 4 — Expo Router
10 drills · ~10 min · Chapitres liés : Partie 5
1. Donnez la route de : app/(tabs)/themes/index.tsx · app/(tabs)/themes/[slug].tsx ·
app/quiz/confirm-quit.tsx.
✅
/themes · /themes/:slug (ex. /themes/php) · /quiz/confirm-quit. Les groupes
(tabs) n’apparaissent pas dans l’URL.
2. Que déclare le _layout.tsx d’un dossier, et que rend-il ?
✅
Le navigateur du niveau (Stack, Tabs) : il rend l’écran actif + la mécanique (pile, transitions, header, barre d’onglets).
3. push vs replace : la question qui décide ?
✅
« Que doit faire back depuis l’écran suivant ? » Revenir ici → push. Ne jamais revenir (étape close : résultat de partie, login) → replace.
4. Pourquoi l’écran de quiz vit-il HORS du groupe (tabs) ?
✅
Pour recouvrir la barre d’onglets (flux immersif) : déclaré dans le Stack racine, il s’empile au-dessus du navigateur de tabs entier.
5. Lire le param de /themes/php, avec le type honnête ?
✅
const { slug } = useLocalSearchParams<{ slug: string }>() — et tous les params sont des
strings (valider/convertir avec defaults).
6. /quiz?count=abc (deep link forgé) : que doit faire l’écran ?
✅
Lecture défensive : Math.min(50, Math.max(5, Number(params.count) || 10)) → 10. Un
deep link est une entrée non fiable.
7. L’état de l’accueil (scroll, useState) après un aller-retour vers un autre écran ?
✅
Conservé — l’écran reste monté sous la pile (le push n’est pas un remplacement). D’où useFocusEffect pour rafraîchir à la visite, pas useEffect.
8. Déclarer une route en modal ?
✅
<Stack.Screen name="…" options={{ presentation: 'modal' }} /> dans le _layout parent.
9. Que fait router.dismissTo(’/(tabs)’) que back() ne fait pas ?
✅
Il dépile plusieurs écrans d’un coup jusqu’à la route cible (modal + quiz ensemble) — back() ne dépile qu’un cran.
10. Le back matériel Android pendant une partie : gestureEnabled: false suffit-il ?
✅
Non — il ne bloque que le geste iOS-like. Le bouton/geste système Android s’intercepte avec
BackHandler (return true = consommé → rediriger vers la confirmation).
👉 Terrain suivant : 5 — État & hooks RN