← Nivå 3 – Mester

Leksjon 6 av 10 ⏱ 90 minutter Premium

Den store ombygning: din nettside i React

Skriv din nivå 1-nettside om i React. Den samme nettside, for tredje gang – denne gang som en professionel.

Din mission

Du tar din nettside fra nivå 1–2 og bygger den igen i React. Lyder det som et skridt tilbake? Det er det ikke – det er den bedste trening: du har allerede indholdet og designet på plads, så du kan fokusere rent på den nye teknik. Og til sidst ser du sort på hvidt, hvorfor profesjonelle synes, det er det verdt.

Ombygningsplanen

  1. Del nettsiden op i komponenter. Tag papir og blyant (seriøst!) og skitser din nettside som bokse: Header, Gallery, Quiz, Footer… Hver boks = én fil i src/.

  2. Flyt HTML’en ind i komponenter. Kopier stykke for stykke fra dine gamle .html-filer ind i JSX. Pas på de velkendte forskelle: classclassName, hver komponent returnerer ét indpakningselement. Kopier dine bilder ind i mappen public/ i Vite-projektet – så fungerer stier som /images/team.jpg uendret.

  3. Flyt CSS’en. Kopier indholdet af din style.css ind i src/App.css. Det bør fungere nesten uendret – CSS er fortsatt CSS.

  4. Dra dataene ud i arrays. Kort, resultater, galleribilder – alt der gentar sig, blir til et array af objekter + .map(), som du lærte i komponentleksjonen.

  5. Skriv nivå 2-trylleformularerne om som state. Her er en konverteringstabel:

    Nivå 2 (vanlig JavaScript)React
    getElementById + textContentstate + {value} i JSX
    addEventListener("click", ...)onClick={...}
    classList.toggle + CSS .hiddenboolean state + {condition && (...)}
    en tæller med en variabeluseState med et tal

Jeg viser deg: mørk tilstand på React-måden

La oss omskrive én trylleformular sammen, så du kan se konverteringen i aktion:

import { useState } from 'react';
import Header from './Header.jsx';
import Gallery from './Gallery.jsx';

function App() {
  const [dark, setDark] = useState(
    localStorage.getItem("mode") === "dark"
  );

  function toggleMode() {
    const newMode = !dark;
    setDark(newMode);
    localStorage.setItem("mode", newMode ? "dark" : "light");
  }

  return (
    <div className={dark ? "dark" : ""}>
      <Header onToggle={toggleMode} dark={dark} />
      <Gallery />
    </div>
  );
}

export default App;

Og i Header.jsx modtar knappen en funktion som prop:

function Header({ onToggle, dark }) {
  return (
    <header>
      <h1>My website</h1>
      <button onClick={onToggle}>{dark ? "☀️" : "🌙"}</button>
    </header>
  );
}

Én siste ny ting: en prop kan også være en funktion. App ejer staten og udlåner sit barn en knap til at skifte den. Det kaldes “state bor øverst,” og det er det mest vanlige mønster i React.

Ombygnings-sjekkliste

💡

At sitte fast er en del af spillet. Denne leksjon er et maraton, ikke en sprint – du kan gjerne dele den over flere dage. Når du sitter fast: konsollen (F12), feilmeldingen fra Vite og sammenligning med eksempler fra tidligere leksjoner. Nøyaktig sådan debugger en professionel.

Sjekk deg selv: Din nettside kjører på localhost og ser (nesten) den samme ud som før – men indeni er den lavet af komponenter, data og state. Prøv nå å legg til ét kort til dataarrayet og se, hvor lite arbeid det krever. Det er hele grunden til, at React eksisterer.

Dette tar du med deg fra leksjonen