ReactJS-vejledning for begyndere
โก Smart opsummering
ReactJS driver brugergrรฆnsefladerne pรฅ utallige moderne websteder og mobilapplikationer. Denne side forklarer, hvad biblioteket er, hvordan man konfigurerer det, og hvordan komponenter, JSX, tilstand, props og events fungerer sammen.

Hvad er ReactJS?
ReactJS er en open source-frontend JavaScriptbibliotek til opbygning af brugergrรฆnseflader. ReactJS vedligeholdes af Meta (tidligere Facebook) og et fรฆllesskab af individuelle udviklere og virksomheder. Det bruges i vid udstrรฆkning som base i opbygningen af โโenkeltsidede applikationer og mobilapplikationer. Det er meget nemt at bruge, og det giver brugerne mulighed for at oprette genbrugelige UI-komponenter.
Fรธr du skriver din fรธrste linje React-kode, er det nyttigt at vide, hvad der adskiller biblioteket fra almindeligt JavaScript. I nรฆste afsnit gennemgรฅs dets kernefunktioner.
Funktioner af ReactJS
JSX: JSX er en udvidelse til JavaScript. Selvom det ikke er obligatorisk at bruge JSX i React, er det en af โโde gode funktioner og nem at bruge.
KomponenterKomponenterne er som rene JavaScriptfunktioner, der hjรฆlper med at gรธre koden nem ved at opdele logikken i genanvendelig uafhรฆngig kode. Vi kan bruge komponenter som funktioner og komponenter som klasser. Komponenter har ogsรฅ tilstand og props, hvilket gรธr livet nemt. Inde i en klassekomponent vedligeholdes tilstand og props.
Virtuelt DOM: React opretter en virtuel DOM, dvs. en in-memory datastruktur-cache. Kun de endelige รฆndringer opdateres senere i browserens DOM, som fortsat gengives hurtigt.
JavaScriptudtryk: JS-udtryk kan bruges i JSX-filer ved hjรฆlp af krรธllede parenteser, for eksempel {}.
Fordele ved ReactJS
Her er vigtige fordele/fordele ved at bruge ReactJS:
- ReactJS bruger en virtuel DOM, der bruger en in-memory datastruktur-cache, og kun de endelige รฆndringer opdateres i browserens DOM. Dette gรธr appen hurtigere.
- Du kan oprette komponenter efter eget valg ved hjรฆlp af React-komponentfunktionen. Komponenterne kan genbruges og er ogsรฅ nyttige til kodevedligeholdelse.
- ReactJS er et open source-program JavaScriptbibliotek, sรฅ det er nemt at komme i gang med.
- ReactJS blev meget populรฆrt pรฅ kort tid og driver produkter som Facebook og InstagramDet bruges af mange kendte virksomheder som Apple, NetflixOsv
- Meta vedligeholder ReactJS-biblioteket, sรฅ det er velholdt og opdateret.
- ReactJS kan bruges til at udvikle rig UI til bรฅde desktop- og mobilapps.
- Let at fejlfinde og teste, da det meste af kodningen er udfรธrt i JavaScript snarere end i HTML.
Ulemper ved ReactJS
Her er ulemper/ulemper ved at bruge ReactJS:
- Det meste af koden er skrevet i JSX, dvs. HTML og CSS er en del af JavaScript. Det kan vรฆre ret forvirrende, da de fleste andre frameworks foretrรฆkker keeping HTML adskilt fra JavaScript kode.
- Filstรธrrelsen pรฅ ReactJS er forholdsvis stor.
Nรฅr du kender afvejningerne, er du klar til at sรฆtte React op. Den hurtigste mรฅde at prรธve det pรฅ er direkte fra et CDN, som vi dรฆkker fรธrst; npm-baserede opsรฆtninger til rigtige projekter fรธlger efter.
Brug af ReactJS fra CDN
For at begynde at arbejde med React, skal vi fรธrst tilfรธje ReactJS til vores side. Du kan nemt komme i gang med at bruge ReactJS med CDN'et. JavaScriptfiler, som vist nedenfor.
Gรฅ til den รฆldre React-dokumentationsside for at fรฅ CDN-linkene, f.eks. https://legacy.reactjs.org/docs/cdn-links.html, og du vil fรฅ de nรธdvendige filer forklaret i fรธlgende billede.
Til dev
<script crossorigin src="https://unpkg.com/react@version/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.development.js"></script>
Til prod
<script crossorigin src="https://unpkg.com/react@version/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.production.min.js"></script>
udskifte udgave med den React-version, du รธnsker til bรฅde react.development.js og react-dom.development.js. Vi bruger version 16 pรฅ denne side, sรฅ eksemplerne nedenfor kรธrer uรฆndret.
ReactDOM.render med createRoot โ se afsnittet om React-versioner nรฆr slutningen af โโdenne side.Hvis du planlรฆgger at bruge CDN-filerne, skal du sรธrge for at beholde crossorigin-attributten for at undgรฅ problemer med tvรฆrdomรฆner. ReactJS-kode kan ikke udfรธres direkte i browseren og skal transpileres ved hjรฆlp af Babel til almindelig kode. JavaScript fรธr udfรธrelse i browseren.
Her er BabelJS-scriptet, der kan bruges:
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
Her er det fungerende ReactJS-eksempel, der bruger CDN-filer og BabelJS-scriptet.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('app')
);
</script>
</body>
</html>
Output:
Vi vil gรฅ i detaljer med koden i nรฆste kapitel; lad os se, hvordan man arbejder med CDN-filer her. Det er ikke god praksis at bruge Babel-scriptet direkte, og nybegyndere bรธr kun bruge det til at lรฆre ReactJS indtil videre. I produktion skal du installere React ved hjรฆlp af npm-pakken.
Brug af NPM-pakker
Sรธrg for at du har Node.js installeret. Hvis ikke, sรฅ fรธlg denne vejledning til Node.js (https://www.guru99.com/node-js-tutorial.html) installation.
Nรฅr du har Node.js installeret, skal du oprette en mappe reactproj/.
For at starte med projektopsรฆtning skal du kรธre kommandoen npm init.
Sรฅdan her vil mappestrukturen se ud:
reactproj\ package.json
Nu vil vi installere de pakker, vi har brug for.
Her er listen over pakker til ReactJS. Vi fastlรฅser React til version 16, sรฅ ReactDOM.render eksemplerne pรฅ denne side kรธrer prรฆcis som vist:
npm install react@16 --save npm install react-dom@16 --save npm install react-scripts --save
ร bn kommandoprompten, og kรธr ovenstรฅende kommandoer i mappen reactproj/.
Opret en mappe src / hvor al JS-koden skal placeres. Al koden til ReactJS-projektet vil vรฆre tilgรฆngelig i src/-mappen. Opret en fil index.js og importer react og react-dom, som vist nedenfor.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Vi har skrevet den grundlรฆggende kode til ReactJS. Vi vil forklare detaljerne i nรฆste kapitel. Vi รธnsker at vise Hej, fra Guru99 vejledninger, og det samme gives til DOM-elementet med id'et "root". Det er taget fra index.html-filen, som er startfilen, som vist nedenfor.
Opret en mappe public/ og tilfรธj index.html i den som vist nedenfor.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Pakken react-scripts vil tage sig af at kompilere koden og starte serveren for at vise HTML-filen, dvs. index.html. Du skal tilfรธje kommandoen i package.json, der vil tage sig af at bruge react-scripts til at kompilere koden og starte serveren, som vist nedenfor:
"scripts": {
"start": "react-scripts start"
}
Efter at have installeret alle pakkerne og tilfรธjet ovenstรฅende kommando, er den endelige package.json som fรธlger:
Package.json
{
"name": "reactproj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "react-scripts start"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-scripts": "^3.1.1"
}
}
For at starte test af ReactJS skal du kรธre kommandoen:
npm run start
C:\reactproj>npm run start > [email protected] start C:\reactproj > react-scripts start
Den รฅbner browseren med URL http://localhost:3000/ som vist nedenfor:
public/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Vi vil bruge den samme proces til at udfรธre JavaScriptfiler ogsรฅ i de nรฆste kapitler. Tilfรธj alle dine .js- og .jsx-filer i src/-mappen. Filstrukturen vil vรฆre som fรธlger:
reactproj/
src/
index.js
node_modules/
public/
index.html
package.json
Sรฅdan opretter du dit fรธrste React-projektopsรฆtning
Her er en trin-for-trin guide i denne ReactJS-tutorial til at starte med den fรธrste React-applikation.
Trin 1) Importer reaktionspakkerne.
1. For at starte med ReactJS skal vi fรธrst importere react-pakkerne som fรธlger.
import React from 'react'; import ReactDOM from 'react-dom';
2. Gem filen som index.js i src/-mappen.
Trin 2) Skriv simpelt Code.
Vi vil skrive en simpel kode i denne tutorial React JS, hvor vi viser beskeden "Hej, fra Guru99 vejledninger!
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
ReactDOM.render vil tilfรธje tag til elementet med id root. Her er HTML-filen vi har:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Trin 3) Kompilรฉr Code.
Nรฆste i denne React.js Tutorial skal vi kompilere koden for at fรฅ output i browseren.
Her er mappestrukturen:
reactproj/
node_modules/
src/
index.js
package.json
public/
index.html
Vi har tilfรธjet kommandoerne til at kompilere den endelige fil i package.json som fรธlger:
"scripts": {
"start": "react-scripts start"
},
For at kompilere den endelige fil skal du kรธre fรธlgende kommando:
npm run start
Nรฅr du kรธrer ovenstรฅende kommando, vil den kompilere filerne og give dig besked, hvis der er fejl. Hvis alt ser godt ud, รฅbner den browseren og kรธrer siden pรฅ http://localhost:3000/
Kommando: npm run start:
C:\reactproj>npm run start > [email protected] start C:\reactproj > react-scripts start
Trin 4) Tjek output.
URL http://localhost:3000 รฅbnes i browseren, nรฅr koden er kompileret, som vist nedenfor:
Sรฅdan opsรฆtter du React med Vite (moderne tilgang)
Ovenstรฅende react-scripts-opsรฆtning kommer fra Create React App (CRA), som var standardstarteren i รฅrevis. React-teamet udfasede officielt Create React App i februar 2025, sรฅ nye projekter bรธr i stedet bruge et moderne byggevรฆrktรธj. Det mest populรฆre valg i dag er Lives, som starter hurtigere og producerer mindre builds.
Sรฅdan opretter du et nyt React-projekt med Vite:
Trin 1) Kรธr kommandoen scaffolding i din terminal:
npm create vite@latest my-react-app -- --template react
Trin 2) Flyt ind i mappen og installer afhรฆngigheder:
cd my-react-app npm install
Trin 3) Start udviklingsserveren:
npm run dev
Vite betjener appen kl. http://localhost:5173/ som standard og genindlรฆses med det samme, nรฅr du gemmer en fil.
Vigtigste forskelle fra den รฆldre opsรฆtning pรฅ denne side:
- Indtastningsfilen er src/main.jsx i stedet for src/index.js.
- Den installerer den nyeste React, som bruger createRoot i stedet for ReactDOM.render.
- index.html findes i projektroden, ikke i public/.
- Bygninger er produceret med
npm run buildtil en dist/-mappe.
Til full-stack behov sรฅsom routing og server rendering anbefaler React-teamet ogsรฅ frameworks som Next.jsAlt, hvad du lรฆrer i kapitlerne nedenfor โ JSX, komponenter, tilstand og props โ gรฆlder uรฆndret i et Vite- eller Next.js-projekt.
Hvad er JSX?
JSX er en udvidelse til JavaScript. Det er et skabelonscript, hvor du fรฅr mulighed for at bruge HTML og JavaManuskript sammen.
Her er et simpelt eksempel pรฅ en JSX-kode.
const h1tag = "<h1>Hello, from Guru99 Tutorials!</h1>";
Hvorfor har vi brug for JSX i React?
Til en brugergrรฆnseflade har vi brug for HTML, og hvert element i DOM'en vil have hรฆndelser, der skal hรฅndteres, tilstandsรฆndringer osv.
I tilfรฆldet med React giver det os mulighed for at bruge HTML og JavaScript i den samme fil og hรฅndter tilstandsรฆndringerne i DOM'en pรฅ en effektiv mรฅde.
Udtryk i JSX
Her er et simpelt eksempel pรฅ, hvordan man bruger udtryk i JSX.
I tidligere ReactJS-eksempler havde vi skrevet noget i retning af:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Vi vil nu รฆndre ovenstรฅende kode for at tilfรธje udtryk. Udtryk bruges i krรธllede parenteser {}, og de udvides under kรธrsel. Udtryk i React er de samme som JavaScriptudtryk.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, from Guru99 Tutorials!";
const h1tag = "<h1>{display}</h1>";
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Lad os nu teste det samme i browseren.
Du kan se pรฅ skรฆrmbilledet ovenfor, at udtrykket {display} ikke er erstattet. React ved ikke, hvad den skal gรธre, nรฅr et udtryk bruges i en .js-fil.
Lad os nu tilfรธje รฆndringer og oprette en .jsx-fil, som vist nedenfor:
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, to Guru99 Tutorials";
const h1tag =<h1>{display}</h1>;
export default h1tag;
Vi har tilfรธjet den nรธdvendige kode og vil bruge test.jsx-filen i index.js. Vi รธnsker at h1tag variabel, der skal bruges i index.js, sรฅ den samme eksporteres som vist ovenfor i test.jsx.
Her er den รฆndrede kode i index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import h1tag from './test.jsx';
ReactDOM.render(
h1tag,
document.getElementById('root')
);
For at bruge test.jsx i index.js, skal vi fรธrst importere den som vist nedenfor:
import h1tag from './test.jsx';
Vi kan bruge h1tag'et nu i ReactDOM.render som vist nedenfor:
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Her er outputtet, nรฅr vi tjekker det samme i browseren:
Hvad er komponenter i ReactJS?
Komponenterne er som rene JavaScriptfunktioner, der gรธr koden nem ved at opdele logikken i genanvendelig uafhรฆngig kode.
Komponenter som funktioner
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
function Hello() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
const Hello_comp = <Hello />;
export default Hello_comp;
Vi har lavet en funktion kaldet Hej der returnerer et h1-tag, som vist ovenfor. Funktionens navn fungerer som et element, som vist nedenfor:
const Hello_comp = <Hello />; export default Hello_comp;
Komponenten Hej bruges som et HTML-tag, dvs. , tildelt Hej_komp variabel, og den samme eksporteres ved hjรฆlp af export.
Lad os nu bruge denne komponent i index.js-filen som vist nedenfor:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Her er output i browseren:
Klasse som komponent
Her er et ReactJS-eksempel, der bruger en klasse som en komponent.
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
render() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
}
export default Hello;
Vi kan bruge Hello-komponenten i index.js-filen som fรธlger:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Komponenten Hello bruges som et HTML-tag, dvs. .
Her er output af det samme.
Klassekomponenter vs. funktionskomponenter og kroge
Du har nu set begge mรฅder at skrive en komponent pรฅ, sรฅ hvilken skal du bruge? Denne side lรฆrer klassekomponenter, fordi de gรธr tilstands- og livscykluskoncepter eksplicitte, hvilket er vรฆrdifuldt for begyndere og stadig vises i รฆldre kodebaser. Men siden React 16.8 introducerede Hooks, kan funktionskomponenter ogsรฅ indeholde tilstand, og de er den anbefalede stil til al ny kode.
| Aspect | Klassekomponent | Funktionskomponent med kroge |
|---|---|---|
| Tilstand | this.state og this.setState() | useState() Hook |
| Lifecycle | componentDidMount, componentDidUpdate, componentWillAfmontere | useEffect() Hook dรฆkker alle tre |
| Syntaks | Mere standardtekst (konstruktรธr, bind, dette) | Kortere, nej dette sรธgeord |
| Status | Understรธttet, รฆldre stil | Anbefales til ny kode |
Her er tilstandseksemplet fra denne side, omskrevet med useState Hook'en:
import React, { useState } from 'react';
function Hello() {
const [msg] = useState("Hello, from Guru99 Tutorials!");
return <h1>{msg}</h1>;
}
export default Hello;
Begge versioner gengiver det samme output. Lรฆr den klassesyntaks, der bruges i kapitlerne nedenfor, og รธv dig derefter i at konvertere hvert eksempel til Hooks.
Hvad er en stat i ReactJS?
En stat er en JavaScriptobjekt, svarende til props, der indeholder data, der skal bruges med ReactJS-renderingen. Tilstandsdataene er et privat objekt og bruges i komponenter i en klasse.
Eksempel pรฅ stat
Her er et eksempel pรฅ, hvordan man bruger `state` i en klasse.
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
msg: "Hello, from Guru99 Tutorials!"
}
}
render() {
return <h1>{this.state.msg}</h1>;
}
}
export default Hello;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Dette er, hvad vi fรฅr, nรฅr vi tester det i browseren:
Hvad er Props i ReactJS?
Props er egenskaber, der skal bruges i en komponent. De fungerer som globale objekter eller variabler, der kan bruges i komponenten.
Rekvisitter til funktionskomponent
Her er et eksempel pรฅ at overfรธre rekvisitter til en funktionskomponent.
import React from 'react';
import ReactDOM from 'react-dom';
function Hello(props) {
return <h1>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Som vist ovenfor har vi tilfรธjet msg tilskriver til komponent. Det samme kan tilgรฅs som rekvisitter inde i Hello-funktionen, som er et objekt, der vil have msg attribut detaljer, og det samme bruges som udtryk.
Komponenten bruges i index.js som fรธlger:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Her er output i browseren:
Rekvisitter til klassekomponent
For at fรฅ adgang til rekvisitterne i en klasse kan vi gรธre det pรฅ fรธlgende mรฅde:
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
render() {
return <h1>{this.props.msg}</h1>;
}
}
export default Hello;
msg attribut overfรธres til komponenten i index.js som fรธlger:
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello msg="Hello, from Guru99 Tutorials!" />,
document.getElementById('root')
);
Dette er output i browseren:
Tjek ogsรฅ:- AngularJS Tutorial for begyndere: Lรฆr AngularJS trin for trin
En komponents livscyklus
Nรฅr komponenter, tilstand og props er dรฆkket, er nรฆste trin at forstรฅ, hvornรฅr React kalder din komponents metoder. En komponentlivcyklus er opdelt i faserne Initialisering, Montering, Opdatering og Afmontering.
Her er en detaljeret forklaring af hvert trin.
En komponent i ReactJS har fรธlgende faser:
Initialisering: Dette er den fรธrste fase af komponentens livscyklus.
Her vil den have standard rekvisitter og tilstand pรฅ det indledende niveau.
MonteringI denne fase gengives komponenten inde i DOM'en. Vi har erfaring med fรธlgende metoder i monteringstilstanden:
- render(): Du har denne metode til alle de oprettede komponenter. Den returnerer HTML-noden.
- componentDidMount(): Dette kaldes umiddelbart efter komponenten er tilfรธjet til DOM'en.
OpdateringI denne tilstand interagerer brugeren med DOM'en, og den opdateres. For eksempel indtaster du noget i tekstfeltet, sรฅ tilstandsegenskaberne opdateres.
Fรธlgende metoder er tilgรฆngelige i opdateringstilstand:
- shouldComponentUpdate(): kaldes fรธr gengivelse; den lader dig beslutte, om komponenten skal opdateres. Returnering af true gengiver komponenten.
- componentDidUpdate(): kaldes efter komponenten er opdateret.
Afmontering: Denne tilstand kommer ind i billedet, nรฅr komponenten ikke er pรฅkrรฆvet eller fjernes.
Fรธlgende er den metode, der er tilgรฆngelig i afmonteret tilstand:
- componentWillUnmount(): kaldes lige fรธr komponenten fjernes eller รธdelรฆgges.
Arbejdseksempel pรฅ livscyklusmetoder
Her er et fungerende eksempel, der viser de metoder, der kaldes i hvert trin.
Eksempel: complife.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class COMP_LIFE extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
componentDidMount() {
console.log('Mounting State : calling method componentDidMount');
}
shouldComponentUpdate() {
console.log('Update State : calling method shouldComponentUpdate');
return true;
}
componentDidUpdate() {
console.log('Update State : calling method componentDidUpdate')
}
componentWillUnmount() {
console.log('UnMounting State : calling method componentWillUnmount');
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default COMP_LIFE;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import COMP_LIFE from './complife.jsx';
ReactDOM.render(
<COMP_LIFE />,
document.getElementById('root')
);
Nรฅr du tjekker outputtet i browseren:
I browserkonsollen fรฅr du:
Nรฅr brugeren indtaster i tekstboksen:
I konsollen vises fรธlgende meddelelser:
Nu hvor du ved, hvornรฅr en komponent gengives og opdateres, lad os anvende tilstand og hรฆndelser pรฅ en praktisk use case: hรฅndtering af brugerinput via formularer.
Arbejde med formularer
I ReactJS, HTML-inputelementer som , , og <select /> har deres egen tilstand og skal opdateres, nรฅr brugeren interagerer, ved hjรฆlp af setState()-metoden.
I dette kapitel vil vi se pรฅ, hvordan man arbejder med formularer i ReactJS.
Her er et fungerende eksempel:
form.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Form extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.formSubmit = this.formSubmit.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
formSubmit(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<form>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="submit" value="Submit" onClick={this.formSubmit} />
</form>
);
}
}
export default Form;
For inputfelterne skal vi opretholde tilstanden, sรฅ til det formรฅl tilbyder React en sรฆrlig metode kaldet sรฆtState, hvilket hjรฆlper med at opretholde tilstanden, nรฅr der sker en รฆndring. I en rigtig applikation, kald ogsรฅ event.preventDefault() inde i formSubmit for at forhindre browseren i at genindlรฆse siden ved afsendelse.
Vi har brugt begivenhederne onChange og onClick pรฅ tekstfeltet og send-knappen. Nรฅr brugeren skriver i tekstfeltet, kaldes onChange-begivenheden, og navnefeltet i state-objektet opdateres, som vist nedenfor:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Form from './form.jsx';
ReactDOM.render(
<Form />,
document.getElementById('root')
);
Outputtet i browseren er som fรธlger:
Trin 1) Indtast dit navn i tekstfeltet:
Trin 2) Klik pรฅ send-knappen:
Arbejde med begivenheder i ReactJS
Formularer er kun รฉn kilde til brugerinteraktion. At arbejde med begivenheder i ReactJS er det samme, som du ville have gjort det i JavaScript. Du kan bruge alle de hรฆndelseshรฅndterere, der bruges i JavaScript. Metoden setState() bruges til at opdatere tilstanden, nรฅr brugeren interagerer med et HTML-element.
Her er et eksempel pรฅ, hvordan man bruger events i ReactJS.
events.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class EventTest extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default EventTest;
For inputfelterne skal vi opretholde tilstanden, sรฅ til det formรฅl leverer React sรฆtState metode, som hjรฆlper med at opretholde tilstanden, nรฅr der er en รฆndring.
Vi har brugt begivenhederne vi รฆndrer os og onclick pรฅ tekstfeltet og knappen. Nรฅr brugeren skriver i tekstfeltet, vi รฆndrer os begivenheden kaldes, og navnefeltet i tilstandsobjektet opdateres, som vist nedenfor:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import EventTest from './events.jsx';
ReactDOM.render(
<EventTest />,
document.getElementById('root')
);
Her er output i browseren:
Nรฅr en bruger indtaster navnet:
Nรฅr brugeren klikker pรฅ knappen Klik her:
Arbejde med Inline CSS i ReactJS
Nรฅr dine komponenter hรฅndterer data og hรฆndelser, er det sidste trin at style dem. Vi vil se pรฅ et fungerende eksempel for at forstรฅ inline CSS i ReactJS.
addstyle.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const h1Style = {
color: 'red'
};
function Hello(props) {
return <h1 style={h1Style}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Jeg har tilfรธjet farven: 'rรธd' stil til h1-tagget.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Outputtet i browseren er som fรธlger:
Du kan oprette et objekt med den รธnskede stil pรฅ elementet og bruge et udtryk til at tilfรธje stilen, som vist i eksemplet ovenfor.
Arbejde med ekstern CSS i ReactJS
Lad os oprette en ekstern CSS-fil. Til det formรฅl skal du oprette en mappe med navnet css/ og tilfรธje style.css i den.
style.css
.h1tag {
color:red;
}
Tilfรธj style.css til din index.html fil
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id = "root"></div>
</body>
</html>
Lad os nu tilfรธje klassen til h1-tagget i .jsx-filen.
addstyle.jsx
import React from 'react';
import ReactDOM from 'react-dom';
let classforh1 = 'h1tag';
function Hello(props) {
return <h1 className={classforh1}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Attributten className fรฅr tildelt klassedetaljerne. Bemรฆrk, at JSX bruger klassenavn i stedet for HTML-attributten class, fordi class er et reserveret nรธgleord i JavaScript. Lad os nu teste det i browseren.
Dette er, hvad du ser, nรฅr du undersรธger h1-tagget i browseren:
Du kan se, at class="h1tag" er blevet tilfรธjet til h1-tagget.
Hvorfor ReactDOM.render blev erstattet af createRoot
Hvert eksempel pรฅ denne side monterer appen med ReactDOM.render, hvilket er korrekt for React 16 og 17, de versioner, som dette kursus er rettet mod. React 18, udgivet i marts 2022, erstattede dette indgangspunkt med createRoot API'en, og React 19 fjernede ReactDOM.render helt. ร rsagen er samtidighed: createRoot gรธr det muligt for React at forberede flere versioner af brugergrรฆnsefladen pรฅ samme tid, afbryde lavprioritetsgengivelse og bevare ...ping og animationer jรฆvne. Funktioner som automatisk batching, useTransition og spรฆndingsbaseret streaming afhรฆnger alle af det.
Den moderne รฆkvivalent til index.js, der bruges pรฅ hele denne side, ser sรฅdan ud:
import { createRoot } from 'react-dom/client';
const root = createRoot(document.getElementById('root'));
root.render(<h1>Hello, from Guru99 Tutorials!</h1>);
Alt andet du har lรฆrt her โ komponenter, JSX, tilstand, props og events โ fungerer pรฅ samme mรฅde efter denne รฆndring pรฅ รฉn linje ved indgangspunktet. Versionsforskelle som denne optrรฆder ofte i Spรธrgsmรฅl til React JS-jobsamtalen, sรฅ det betaler sig at forstรฅ begge API'er.
Ofte Stillede Spรธrgsmรฅl
Tjek ogsรฅ:- Top 70 React Interview Spรธrgsmรฅl og Svar (Opdateret)























