← Stopnja 3 – Mojster

Lekcija 6 od 10 ⏱ 90 minut Premium

Velika prenova: tvoja spletna stran v Reactu

Prepiši svojo spletno stran iz ravni 1 v React. Ista stran, tretjič – tokrat kot profesionalec.

Tvoja naloga

Vzameš svojo spletno stran iz ravni 1–2 in jo znova zgradiš v Reactu. Zveni kot korak nazaj? Ni – to je najboljša vadba: vsebino in oblikovanje že imaš, zato se lahko osredotočiš čisto na novo tehniko. Na koncu boš črno na belem videl, zakaj se profesionalcem splača.

Načrt prenove

  1. Razdeli spletno stran na komponente. Vzemi papir in svinčnik (resno!) in nariši stran kot škatle: Header, Gallery, Quiz, Footer… Vsaka škatla = ena datoteka v src/.

  2. Prestavi HTML v komponente. Kopiraj kos za kosom iz starih .html datotek v JSX. Pazljivo na znane razlike: classclassName, vsaka komponenta vrne en ovojni element. Slike kopiraj v mapo public/ v Vite projektu – poti kot /images/team.jpg delujejo nespremenjene.

  3. Prestavi CSS. Vsebino style.css kopiraj v src/App.css. Skoraj brez sprememb – CSS je še vedno CSS.

  4. Izvleci podatke v polja. Kartice, rezultati, fotografije v galeriji – vse, kar se ponavlja, spremeni v polje objektov + .map(), kot si se naučil v lekciji o komponentah.

  5. Prepiši kouzla iz ravni 2 v state. Tabela pretvorbe:

    Raven 2 (navaden JavaScript)React
    getElementById + textContentstate + {vrednost} v JSX
    addEventListener("click", ...)onClick={...}
    classList.toggle + CSS .hiddenboolean state + {pogoj && (...)}
    števec s spremenljivkouseState s številom

Pokažem ti: temni način na React način

Skupaj prepišimo eno kouzlo, da vidiš pretvorbo v praksi:

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;

In v Header.jsx gumb prejme funkcijo kot prop:

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

Še ena nova stvar: prop je lahko tudi funkcija. App ima state in otroku posodi gumb za preklop. To se imenuje “state živi na vrhu” in je najpogostejši vzorec v Reactu.

Kontrolni seznam prenove

💡

Zatakniti se je del igre. Ta lekcija je maraton, ne sprint – razdeli jo čez več dni. Ko se zatakneš: konzola (F12), sporočilo napake od Vite in primerjava s primeri iz prejšnjih lekcij. Tako debugira profesionalec.

Preveri se: Tvoja stran teče na localhostu in izgleda (skoraj) enako kot prej – notri pa je sestavljena iz komponent, podatkov in state. Poskusi dodati eno kartico v polje podatkov in opazi, koliko malo dela je to. Zato React sploh obstaja.

Kaj si vzameš iz te lekcije