React Academy · Lektion

Prop drilling: när det skadar och när det fungerar

Identifiera kedjor med djup prop drilling och skilja brus från verklig komplexitet.

Lektion 2 av 413 steg

Prop drilling: när det skadar och när det fungerar är en gratis lektion i React Academy på CoddyKit. Detta är lektion 2 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.

Välkommen

I den här lektionen lär ni er att identifiera prop drilling, förstå när det orsakar verkliga problem och skilja det från situationer där det är korrekt och enkelt att skicka props.

Vad är prop drilling?

Prop drilling uppstår när ni skickar en prop genom mellanliggande komponenter som inte använder den själva — det är bara deras barn som behöver den. Varje mellanliggande lager måste ta emot och skicka vidare propen.
// Middle component: receives 'user' only to pass it down
function Layout({ user }) {
  return <Sidebar user={user} />;
}
// Sidebar: receives 'user' only to pass it down
function Sidebar({ user }) {
  return <UserAvatar user={user} />;
}
// UserAvatar: actually uses 'user'
function UserAvatar({ user }) {
  return <img src={user.avatarUrl} />;
}

När prop drilling är helt okej

Att skicka props genom 1–2 nivåer är ofta helt okej och den enklaste lösningen. Kostnaden för att lägga till Context eller ett state-bibliotek är högre än kostnaden för en extra prop på grunda nivåer.

Tecken på att prop drilling har blivit ett problem

Prop drilling är ett problem när: (1) props skickas genom 4 eller fler komponentnivåer som inte använder dem, (2) ett namnbyte på en prop kräver ändringar i många filer, (3) det är svårt att se vilken komponent som faktiskt använder datan.

Refaktorera med komponentkomposition

Innan ni tar till Context kan ni prova **komponentkomposition**. Skicka den färdigrenderade komponenten som använder datan som en prop (eller som children) i stället för rådata. Det mellanliggande lagret behöver aldrig känna till datan.
// Instead of drilling 'user' through Layout → Sidebar → UserAvatar,
// render UserAvatar at the top level and pass it as a slot:
function App() {
  return <Layout sidebar={<UserAvatar user={user} />} />;
}

Komponentkomposition minskar kopplingen

Komposition innebär att parent-komponenten som äger datan också renderar komponenten som använder den direkt. Mellanliggande layoutkomponenter tar emot färdig JSX och är därför helt frikopplade från datan.

När ska ni använda Context?

Använd Context när: (1) komposition skulle kräva att ni skickar komplex JSX genom många lager, (2) många orelaterade komponenter i trädet behöver samma data (till exempel aktuell användare, tema eller locale).

När ska ni använda ett state-bibliotek?

Använd Zustand, Redux eller liknande när state är komplext, uppdateras ofta, behöver devtools eller måste delas mellan helt separata komponentträd.

Det omvända dataflödet

Prop drilling gäller även callbacks. Att skicka en `onChange`-hanterare fem nivåer ned är lika besvärligt som att skicka data. Använd samma strategier med komposition och Context för callbacks.

Beslutsflöde

Fråga er: hur många nivåer? 1–2: skicka bara vidare propen. 3 eller fler: prova komposition först. Fortfarande rörigt: använd Context. Komplex uppdateringslogik eller flera träd: använd ett state-bibliotek.

Snabb kontroll

Vilken lösning bör ni prova INNAN ni tar till Context för att lösa prop drilling?

Sammanfattning

Prop drilling genom 1–2 nivåer är helt okej. Efter 3 nivåer bör ni först prova komponentkomposition. Använd Context när många komponenter behöver samma data. Använd ett state-bibliotek för komplext state eller state som delas mellan träd.

Nästa

Nästa lektion: **Mönster för kommunikation mellan syskonkomponenter** — ni kommer att samordna två syskonkomponenter genom delat state i parent-komponenten och callback-props.
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 ”Prop drilling: när det skadar och när det fungerar” gratis?

Ja – hela texten till ”Prop drilling: när det skadar och när det fungerar” 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 ”Prop drilling: när det skadar och när det fungerar”?

Identifiera kedjor med djup prop drilling och skilja brus från verklig komplexitet. 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 2 av 4.

Hur lång tid tar lektionen ”Prop drilling: när det skadar och när det fungerar”?

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. Lyfta state: principer och exempel
  2. Prop drilling: när det skadar och när det fungerar
  3. Mönster för kommunikation mellan syskon
  4. Välja rätt plats för state
← Tillbaka till React Academy