0Pricing
React Native Academy · Lektion

Context mit useContext verwenden

Lesen Sie Context-Werte in jeder verschachtelten Komponente mit dem useContext-Hook aus, ohne Props durch dazwischengeschaltete Komponenten weiterreichen zu müssen.

Context mit useContext verwenden ist eine kostenlose React Native Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Native Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Native Academy-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Reading Context with useContext

The useContext(ContextObject) hook lets any function component subscribe to a context and read its current value. It replaces the older Consumer render prop pattern with a simple hook call. The component automatically re-renders whenever the context value changes.

import { useContext } from 'react';
import { ThemeContext } from '../context/ThemeContext';

function Header() {
  const { theme } = useContext(ThemeContext);

  return (
    <View style={{ backgroundColor: theme === 'dark' ? '#1a1a2e' : '#fff' }}>
      <Text>My App</Text>
    </View>
  );
}

No Prop Drilling Required

The main benefit of useContext is that the consuming component does not need to receive props from its parent. The Header component in the previous example can be anywhere in the tree — three levels deep, inside a modal, or in a completely different branch — and it still reads the same theme value directly from context.

// Without context: theme prop drills through App→Screen→Section→Card→Header
// With context: Header reads theme directly from context
function DeepComponent() {
  const { user } = useContext(AuthContext); // no props needed
  return <Text>Welcome, {user.name}</Text>;
}

Calling Actions from Context

Context can expose not just data but also functions that update the data. Call these functions directly from the consuming component without knowing where the state lives. The Provider handles the state update and all consumers that depend on the value re-render automatically.

function LogoutButton() {
  const { logout } = useContext(AuthContext);

  return (
    <Button title='Sign Out' onPress={logout} />
  );
}

Using Multiple Contexts in One Component

A component can consume multiple contexts by calling useContext multiple times with different context objects. Each call is independent — a change in ThemeContext only causes re-renders in ThemeContext consumers, not in AuthContext consumers (unless they also depend on ThemeContext).

function ProfileScreen() {
  const { user } = useContext(AuthContext);
  const { theme } = useContext(ThemeContext);

  return (
    <View style={styles[theme]}>
      <Text style={styles[theme + 'Text']}>
        {user.name}
      </Text>
    </View>
  );
}

Context Value is the Latest Render

useContext always gives you the most recent value provided by the nearest matching Provider. When the Provider re-renders with a new value, React propagates the update to all consumers immediately, even if intermediate components between the Provider and consumer did not re-render. This is one of the key advantages over passing props through potentially non-rendering intermediaries.

Creating a useAuth Custom Hook

Instead of importing and calling useContext(AuthContext) in every component, wrap it in a custom useAuth hook. This abstracts away the context object import, makes the calling code more readable, and lets you add error checks or derived values in one place.

// context/AuthContext.js
export function useAuth() {
  const ctx = useContext(AuthContext);
  if (!ctx) throw new Error('useAuth must be inside AuthProvider');
  return ctx;
}

// In any component
function NavBar() {
  const { user, logout } = useAuth(); // clean and simple
  return <Text>{user.email}</Text>;
}

Guarding Routes with Context

A common pattern is to read auth state from context and conditionally render either the authenticated app stack or the login screen. The root navigator reads the user from AuthContext — when user is null it renders the auth screens, and when it is set it renders the main app screens.

function RootNavigator() {
  const { user } = useAuth();

  return (
    <NavigationContainer>
      {user ? <AppStack /> : <AuthStack />}
    </NavigationContainer>
  );
}

Conditional Rendering Based on Context

Components can use context values to make render decisions. A premium feature component checks the user's subscription tier from context and renders either the full feature or a paywall CTA. This logic lives in the consuming component, keeping the Provider generic and reusable.

function PremiumFeature({ children }) {
  const { user } = useAuth();
  const isPro = user?.subscription === 'pro';

  if (!isPro) {
    return <UpgradePrompt />;
  }

  return children;
}

Context in List Items

Context works inside FlatList renderItem components too. Each list item can read from context without props. Be mindful that if the context value changes, every visible list item will re-render — use React.memo and ensure the context value is stable (memoized) to mitigate the impact.

const CartItem = React.memo(({ item }) => {
  const { addToCart } = useContext(CartContext);

  return (
    <View style={styles.row}>
      <Text>{item.name}</Text>
      <Button title='Add' onPress={() => addToCart(item)} />
    </View>
  );
});

Context vs Props: When to Use Each

Use props for data that is naturally owned by the parent and directly relevant to the child's display. Use context for global or cross-cutting concerns: authentication, theme, language, cart state. Over-using context for local data makes components harder to understand and reuse in isolation, because their dependencies are implicit rather than explicit.

The useContext Return Value

useContext returns exactly the value passed to the nearest Provider's value prop. If no Provider is found above the component, it returns the default value given to createContext(). Destructure the returned object directly at the call site for cleaner, more readable code.

// Full value object
const themeContext = useContext(ThemeContext);
themeContext.theme; // 'light' or 'dark'

// Destructured (preferred)
const { theme, toggleTheme } = useContext(ThemeContext);

// From custom hook
const { user, login, logout } = useAuth();

Quick Check

Test your understanding of consuming context with useContext from this lesson.

Lesson Recap

In this lesson you learned: useContext(ContextObject) reads the nearest Provider's value without prop drilling, a component can consume multiple contexts by calling useContext multiple times, and wrapping useContext in a custom hook gives a clean API with error checking. Next up we build a theme context with a dark mode toggle.

Häufig gestellte Fragen

Ist die Lektion „Context mit useContext verwenden“ kostenlos?

Ja — der vollständige Text von „Context mit useContext verwenden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Native Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Native Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Context mit useContext verwenden“?

Lesen Sie Context-Werte in jeder verschachtelten Komponente mit dem useContext-Hook aus, ohne Props durch dazwischengeschaltete Komponenten weiterreichen zu müssen. Du übst React Native Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Native Academy zu starten?

Keine Vorkenntnisse erforderlich. React Native Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Context mit useContext verwenden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Native Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Native Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Einen Context erstellen und bereitstellen
  2. Context mit useContext verwenden
  3. Ein Theme-Context mit Dark-Mode-Umschalter
  4. Performance-Probleme mit Context vermeiden
← Zurück zu React Native Academy