← Nivå 3 – Mästare

Lektion 6 av 10 ⏱ 90 minuter Premium

Den stora ombyggnaden: din webbplats i React

Skriv om din nivå 1-webbplats i React. Samma webbplats, för tredje gången – den här gången som ett proffs.

Ditt uppdrag

Du tar din webbplats från nivå 1–2 och bygger den igen i React. Låter som ett steg bakåt? Det är det inte – det är den bästa träningen: du har redan innehåll och design klart, så du kan fokusera helt på den nya tekniken. Och i slutet ser du svart på vitt varför proffsen tycker det är värt det.

Ombyggnadsplanen

  1. Dela upp webbplatsen i komponenter. Ta papper och penna (på allvar!) och skissa din webbplats som rutor: Header, Gallery, Quiz, Footer… Varje ruta = en fil i src/.

  2. Flytta HTML till komponenter. Kopiera bit för bit från dina gamla .html-filer till JSX. Tänk på de vanliga skillnaderna: classclassName, varje komponent returnerar ett omslagselement. Kopiera dina bilder till mappen public/ i Vite-projektet – då funkar sökvägar som /images/team.jpg oförändrat.

  3. Flytta CSS. Kopiera innehållet i din style.css till src/App.css. Det ska funka nästan oförändrat – CSS är fortfarande CSS.

  4. Dra ut datan till arrayer. Kort, resultat, gallerifoton – allt som upprepas blir en array av objekt + .map(), som du lärde dig i komponentlektionen.

  5. Skriv om nivå 2-trollformlerna som state. Här är en omvandlingstabell:

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

Jag visar: mörkt läge på React-sätt

Låt oss skriva om en trollformel tillsammans, så du ser omvandlingen i praktiken:

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;

Och i Header.jsx får knappen en funktion som prop:

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

En sista ny sak: en prop kan också vara en funktion. App äger statet och lånar barnet en knapp för att växla det. Det kallas “state bor upptill”, och det är det vanligaste mönstret i React.

Ombyggnadschecklista

💡

Att fastna hör till. Den här lektionen är ett maraton, inte en sprint – dela gärna upp den över flera dagar. När du fastnar: konsolen (F12), felmeddelandet från Vite och jämförelse med exempel från tidigare lektioner. Så felsöker ett proffs.

Kolla själv: Din webbplats kör på localhost och ser (nästan) likadan ut som förut – men inuti består den av komponenter, data och state. Prova nu att lägga till ett kort i data-arrayen och se hur lite arbete det kräver. Det är hela anledningen till att React finns.

Det här tar du med dig från lektionen