React Academy · Lektion

Navigering med Expo Router

Konfigurera Expo Router för filbaserad navigering med typsäkra routes och deep linking.

Lektion 3 av 413 steg

Navigering med Expo Router är en gratis lektion i React Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.

Vad är Expo Router?

Expo Router är ett filbaserat routingbibliotek för React Native (byggt ovanpå React Navigation). Precis som Next.js App Router definierar filstrukturen dina navigeringsrutter.

Installation

Skapa ett nytt Expo-projekt med Expo Router förkonfigurerat.

# Create new project:
npx create-expo-app@latest my-app --template tabs

# Or add to existing Expo project:
npx expo install expo-router react-native-safe-area-context react-native-screens

Filbaserad routing

Filer i katalogen app/ blir automatiskt rutter. index.tsx är roten och [id].tsx är ett dynamiskt segment.

app/
  _layout.tsx       # root layout (Stack navigator)
  index.tsx          # → / (home screen)
  profile.tsx        # → /profile
  posts/
    _layout.tsx      # posts stack layout
    index.tsx        # → /posts
    [id].tsx         # → /posts/123 (dynamic)

Rotlayout

Rotfilen _layout.tsx omsluter alla skärmar med providers och definierar navigatorn på toppnivå.

// app/_layout.tsx
import { Stack } from 'expo-router';

export default function RootLayout() {
  return (
    <Stack>
      <Stack.Screen name="index" options={{ title: 'Home' }} />
      <Stack.Screen name="profile" options={{ title: 'Profile' }} />
    </Stack>
  );
}

Navigera med Link

Använd komponenten Link från expo-router för deklarativ navigering – ungefär som next/link.

import { Link } from 'expo-router';

function HomeScreen() {
  return (
    <Link href="/profile">Go to Profile</Link>
  );
}

Navigera med useRouter

Använd useRouter() för imperativ navigering – navigera framåt, ersätt den aktuella rutten eller gå tillbaka programmatiskt.

import { useRouter } from 'expo-router';

function LoginForm() {
  const router = useRouter();

  async function handleLogin() {
    await login();
    router.replace('/dashboard');
  }
}

Dynamiska rutter

Åtkomst till ruttparametrar i en dynamisk ruttfil får du med useLocalSearchParams().

// app/posts/[id].tsx
import { useLocalSearchParams } from 'expo-router';

export default function PostScreen() {
  const { id } = useLocalSearchParams<{ id: string }>();
  return <PostDetail postId={id} />;
}

Tabbnavigering

Använd Tabs från expo-router i en grupplayout för navigering med flikar längst ned.

// app/(tabs)/_layout.tsx
import { Tabs } from 'expo-router';

export default function TabLayout() {
  return (
    <Tabs>
      <Tabs.Screen name="index" options={{ title: 'Home', tabBarIcon: ({ color }) => <HomeIcon color={color} /> }} />
      <Tabs.Screen name="explore" options={{ title: 'Explore' }} />
    </Tabs>
  );
}

Modala skärmar

Visa en skärm som en modal genom att ange presentation: 'modal' i alternativen för Stack.Screen.

// app/_layout.tsx
<Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Settings' }} />

// Navigate to modal:
router.push('/modal');

Deep linking

Expo Router hanterar deep links automatiskt. Definiera ditt URL-schema i app.json, så öppnar länkar som myapp://posts/123 rätt skärm.

// app.json
{
  "expo": {
    "scheme": "myapp"
  }
}

Autentiseringsmönster

Använd en rotlayout som villkorsstyrt renderar autentiseringsskärmar eller appens flikar beroende på autentiseringstillståndet.

// app/_layout.tsx
import { Redirect } from 'expo-router';

function RootLayout() {
  const { user } = useAuth();
  if (!user) return <Redirect href="/login" />;
  return <Stack />;
}

Snabb kontroll

Vilken hook i Expo Router läser dynamiska ruttparametrar, till exempel id i /posts/[id]?

Sammanfattning

Expo Router använder filbaserad routing: app/index.tsx → startsida, app/[id].tsx → dynamisk rutt. Definiera layouter i _layout.tsx, navigera med Link eller useRouter() och läs parametrar med useLocalSearchParams().

Gratis att börja

Lär dig React med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
88
Lektioner
324

Vanliga frågor

Är lektionen ”Navigering med Expo Router” gratis?

Ja – hela texten till ”Navigering med Expo Router” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Navigering med Expo Router”?

Konfigurera Expo Router för filbaserad navigering med typsäkra routes och deep linking. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig React Academy?

Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Navigering med Expo Router”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här React Academy-lektionen?

Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. React Native-kärnkomponenter jämfört med webbläsarens DOM
  2. Styling med StyleSheet-API:t och Flexbox
  3. Navigering med Expo Router
  4. Åtkomst till enhets-API:er: kamera, plats och pushnotiser
← Tillbaka till React Academy