Skip to Content

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