Guides

Hvad er React? En letforståelig guide for ikke-udviklere

React er et JavaScript-bibliotek til at bygge brugerflader — den del af en app, folk ser og klikker på. Du bygger skærme af genbrugelige dele kaldet komponenter, fx en knap, et produktkort eller en hel side, og React holder skærmen i takt med dine data: når dataene ændrer sig, opdaterer React de dele af siden, der afhænger af dem. Det blev skabt hos Facebook (nu Meta), er open source og er en af de mest brugte måder at bygge webapps på.

Hvorfor det betyder noget, når du bygger med AI

Hvis du bygger en webapp med et AI-værktøj, er der en god chance for, at den er skrevet i React. Mange AI-app-builders bruger React som standard, fordi det er populært, godt dokumenteret, og der findes en enorm mængde React-kode, som AI-modeller har lært af.

Du behøver ikke at skrive React for at bygge med AI. Men lidt viden hjælper dig med at:

  • Beskrive ændringer præcist. "Ændr ProductCard-komponenten, så prisen er fed" er tydeligere end "gør priser mere markante et sted".
  • Forstå fejl. Beskeder som "Cannot read properties of undefined" eller "Too many re-renders" giver mere mening.
  • Træffe fornuftige valg. Simple React-apps renderer i browseren, hvilket påvirker synlighed i søgning og hastighed ved første indlæsning. Det hjælper dig med at beslutte, hvornår du skal bede om en anden opsætning.
  • Arbejde med udviklere senere. React er en almindelig færdighed, så en udvikler kan normalt hurtigt sætte sig ind i en React-kodebase.

En hverdagsanalogi

Tænk på LEGO. I stedet for at skære en hel model ud af én klods, bygger du den af standardklodser. Et par klodser laver et hjul; fire hjul og nogle andre dele laver en bil. Hvis du vil have, at alle biler har røde hjul, ændrer du hjulets design én gang.

React-komponenter er klodserne. En Button-komponent bruges inde i et ProductCard, som bruges inde i et ProductGrid, som er en del af ShopPage. Ændrer du Button én gang, ændrer alle knapper i appen sig.

Den anden halvdel af analogien: forestil dig, at LEGO-modellen bygger sig selv om, når du ændrer instruktionerne. Det er Reacts andet trick — du beskriver, hvordan skærmen skal se ud for de aktuelle data, og React finder ud af, hvad der skal ændres på siden.

De centrale idéer

Komponenter

En komponent er en JavaScript-funktion, der returnerer et stykke brugerflade. Reacts dokumentation beskriver en komponent som en del af UI'en med sin egen logik og udseende. Komponentnavne starter med stort bogstav.

JSX

Komponenter skrives typisk i JSX, som ligner HTML blandet ind i JavaScript:

function Greeting() {
  return <h1>Velkommen tilbage!</h1>;
}

JSX er valgfrit, men Reacts dokumentation nævner, at de fleste projekter bruger det. Det omdannes til almindelig JavaScript, før det kører i browseren.

Props

Props er de input, du sender ind i en komponent, ligesom indstillinger på en genbrugelig del:

<ProductCard name="Lavendellys" price={24} />

Den samme ProductCard kan vise ethvert produkt.

State

State er information, en komponent husker, og som kan ændre sig, mens appen kører — om en menu er åben, hvad der er skrevet i et søgefelt, hvor mange varer der er i kurven. Når state ændrer sig, renderer React komponenten igen, så skærmen matcher.

Hooks

Hooks er funktioner, hvis navne starter med use, fx useState (husker en værdi) og useEffect (kører kode efter rendering, fx for at hente data). Du vil se dem overalt i AI-genereret React-kode.

Et eksempel: en kurvtæller

Lad os sige, din webshop har en knap "Læg i kurv" og et kurvikon, der viser antallet af varer. I React ser det nogenlunde sådan ud:

import { useState } from "react";

function Shop() {
  const [cartCount, setCartCount] = useState(0);

  return (
    <div>
      <CartIcon count={cartCount} />
      <ProductCard
        name="Lavendellys"
        price={24}
        onAdd={() => setCartCount(cartCount + 1)}
      />
    </div>
  );
}

function CartIcon({ count }) {
  return <span>Kurv ({count})</span>;
}

function ProductCard({ name, price, onAdd }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>${price}</p>
      <button onClick={onAdd}>Læg i kurv</button>
    </div>
  );
}

Sådan forløber det, når en shopper klikker på "Læg i kurv":

  1. Knappens onClick kalder onAdd, som kalder setCartCount.
  2. React opdaterer cartCount-state fra 0 til 1.
  3. React renderer Shop igen og sender count={1} ind i CartIcon.
  4. Siden viser nu "Kurv (1)". Ingen skrev kode, der sagde "find kurvteksten og ændr den" — skærmen følger dataene.

Bemærk også begrænsningerne. Tællingen lever i browserens hukommelse. Opdaterer du siden, er den tilbage på 0. For at gemme en kurv skal du gemme den et varigt sted — en cookie, browserlager eller en database via din backend. React håndterer skærmen; det gemmer ikke dine data.

Hvor React passer ind i en webapp

DelHvad den gørTypiske valg
UI-bibliotekBygger brugerfladenReact
SprogHvad koden er skrevet iJavaScript eller TypeScript
ByggeværktøjOmdanner kildekode til filer, browseren indlæser; kører udviklingsserverenVite
Framework (valgfrit)Tilføjer routing, server-rendering, datahentningNext.js, React Router
StylingHvordan det ser udTailwind CSS, CSS-filer
BackendForretningslogik, data, hemmelighederNode.js, Python og andre
DatabaseGemmer dataPostgres og andre

En "Vite + React"-app renderer i browseren (en single-page app). En Next.js-app kan renderere sider på serveren først, hvilket hjælper søgemaskiner og hastigheden ved første indlæsning.

Almindelige begreber forklaret

BegrebBetydning
KomponentEn genbrugelig del af brugerfladen, skrevet som en funktion.
JSXHTML-lignende syntaks inde i JavaScript, der bruges til at beskrive komponenter.
PropsInput sendt ind i en komponent.
StateData en komponent husker, og som kan ændre sig over tid.
HookEn funktion, der starter med use, og som tilføjer funktioner som state til en komponent.
Render / re-renderAt React finder ud af, hvad skærmen skal vise, igen efter ændringer.
Single-page app (SPA)En app, der indlæses én gang og opdaterer siden med JavaScript i stedet for at hente nye sider.
Server-side rendering (SSR)At producere en sides HTML på serveren, før den sendes.
npm-pakkeEt genbrugeligt kodebibliotek, du kan installere, fx et datovælger- eller diagrambibliotek.
React NativeEt beslægtet projekt til at bygge native mobilapps.

Almindelige fejl og misforståelser

  • "React er et programmeringssprog." Det er et bibliotek, skrevet i og brugt fra JavaScript (eller TypeScript).
  • "React gemmer mine data." State lever i browseren og forsvinder ved opdatering. Varige data kræver en backend og en database.
  • At putte hemmeligheder i React-koden. Alt i en React-app sendes til besøgendes browser. API-nøgler der er offentlige. Hold dem på serveren.
  • "React-apps kan ikke rangere i søgning." Rendering kun i klienten er svagere for søgning, men prerendering eller server-rendering løser det meste.
  • Kæmpe komponenter. En komponent på 1.000 linjer er svær at ændre sikkert, både for mennesker og AI. Bed om mindre.
  • At antage, at en React-webapp er en telefonapp. Den kører i browseren, også på telefoner, men er ikke en App Store-app.

Hvad du beder din AI-builder om

  • "Del denne side op i små, navngivne komponenter, og fortæl mig, hvilken fil hver enkelt ligger i."
  • "Gør ProductCard-komponenten genbrugelig, med name, price og image som props."
  • "Gem kurven i databasen, så den overlever en opdatering."
  • "Behold alle API-nøgler på serveren; React-koden skal kalde vores egen API."
  • "Tilføj indlæsnings- og fejltilstande for data, der kommer fra serveren."
  • "Hvis synlighed i søgning er vigtig for disse sider, så prerender dem eller brug en server-renderet opsætning."
  • "Forklar i almindelige ord, hvad denne fejl betyder, og hvilken komponent den kommer fra."

Til det større billede, se frontend vs. backend, og til at gennemgå det, AI'en skrev, se sådan gennemgår du AI-genereret kode.

React i Mythex

Medmindre du beder om andet, starter Mythex nye projekter på Vite + React + TypeScript + Tailwind, med en live-forhåndsvisning der kører, mens du chatter. Du kan nævne en anden opsætning i din første prompt — fx "Brug Next.js" eller "simpel statisk HTML-landingsside" — og Mythex vælger ud fra det, du skriver; der er ingen indstillingsskærm til det. Dokumentationssiden om hvordan teknologien vælges forklarer mulighederne. Kodeeditoren er skrivebeskyttet på Free; på Pro kan du redigere React-koden direkte og eksportere projektet for at arbejde videre på det andetsteds.

Spørgsmål

Hvad er React med enkle ord?

React er et JavaScript-bibliotek til at bygge brugerflader. Du bygger skærme af genbrugelige dele kaldet komponenter, fx en knap, et produktkort eller en hel side, og React opdaterer det, der vises på skærmen, når de underliggende data ændrer sig.

Er React et framework eller et bibliotek?

React kalder sig selv et bibliotek: det fokuserer på at bygge brugerfladen. Frameworks bygget oven på det, fx Next.js, tilføjer ting som routing, server-rendering og datahentning.

Hvorfor bruger AI-app-builders React?

React er en af de mest brugte måder at bygge webgrænseflader på, så der findes en enorm mængde React-kode og dokumentation, som AI-modeller kan lære af. Dens komponentstruktur passer også godt til at lave små, præcise ændringer.

Er React dårligt for SEO?

Ikke i sig selv. En React-app, der renderer alt i browseren, er sværere at læse for nogle crawlere, men React kan også prerenderes eller renderes på serveren, fx med Next.js, hvilket løser det meste af det.

Er React det samme som React Native?

Nej. React bygger webgrænseflader, der kører i en browser. React Native bruger de samme idéer til at bygge native iOS- og Android-apps. De deler begreber, men ikke det meste af deres byggeklodser.

Mythex · Pricing · Byg hvad som helst med AI · Skabeloner til websites og apps · Mythex sammenlignet · Ordliste for app-bygning med AI · Gratis værktøjer til app-bygning med AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)