Tutoriál ReactJS pro začátečníky

⚡ Chytré shrnutí

ReactJS pohání uživatelská rozhraní nespočtu moderních webových stránek a mobilních aplikací. Tato stránka vysvětluje, co je to knihovna, jak ji nastavit a jak komponenty, JSX, stavy, props a události spolupracují.

  • ⚛️ Foundation: ReactJS je open-source komponentní platforma. JavaKnihovna skriptů vytvořená na Facebooku (nyní Meta) pro vytváření rychlých a interaktivních uživatelských rozhraní.
  • 🧩 Součásti: Znovupoužitelné stavební bloky, psané jako funkce nebo třídy, rozdělují logiku uživatelského rozhraní na nezávislé a udržovatelné části.
  • ???? JSX: A JavaRozšíření syntaxe skriptů umožňuje psát značky a výrazy podobné HTML uvnitř stejného souboru.
  • 🔄 Stát a rekvizity: Stav ukládá soukromá, měnící se data uvnitř komponenty, zatímco props do ní předávají data pouze pro čtení.
  • ⚙️ Cesty nastavení: Tagy skriptů CDN se hodí pro rychlé experimenty; balíčky npm nebo Vite se hodí pro reálné projekty.
  • ???? Moderní praxe: Funkční komponenty s hooky a React 18+ createRoot API jsou nyní doporučeným standardem.
  • 💼 Kariérní dopad: Dovednosti v oblasti React zůstávají mezi nejžádanějšími v nabídkách práce front-end vývojářů po celém světě.

Tutoriál ReactJS pro začátečníky: Naučte se základy Reactu krok za krokem

Co je ReactJS?

ReactJS je open-source front-end JavaKnihovna skriptů pro vytváření uživatelských rozhraní. ReactJS je spravován společností Meta (dříve Facebook) a komunitou jednotlivých vývojářů a společností. Je široce používán jako základ pro tvorbu jednostránkových a mobilních aplikací. Je velmi snadno použitelný a umožňuje uživatelům vytvářet opakovaně použitelné komponenty uživatelského rozhraní.

Než napíšete první řádek kódu v Reactu, je užitečné vědět, co odlišuje knihovnu od prostého kódu. JavaSkript. Následující část se zaměří na jeho základní funkce.

Vlastnosti ReactJS

JSX: JSX je rozšíření pro JavaSkript. I když není povinné používat JSX v Reactu, je to jedna z dobrých funkcí a snadno se používá.

KomponentyKomponenty jsou jako čisté JavaSkriptové funkce, které pomáhají zjednodušit kód rozdělením logiky do opakovaně použitelného nezávislého kódu. Komponenty můžeme používat jako funkce a komponenty jako třídy. Komponenty mají také stav a vlastnosti, což usnadňuje život. Uvnitř komponenty třídy se stav a vlastnosti udržují.

Virtuální DOM: React vytváří virtuální DOM, tj. mezipaměť datových struktur v paměti. V DOMu prohlížeče se později aktualizují pouze finální změny, což zajišťuje rychlé vykreslování.

JavaVýrazy skriptu: JS výrazy lze v JSX souborech použít pomocí složených závorek, například {}.

Výhody ReactJS

Zde jsou důležité výhody/výhody používání ReactJS:

  • ReactJS používá virtuální DOM, který využívá mezipaměť datových struktur v paměti, a v DOMu prohlížeče se aktualizují pouze poslední změny. Díky tomu je aplikace rychlejší.
  • Komponenty dle vlastního výběru si můžete vytvořit pomocí funkce komponent React. Komponenty lze znovu použít a jsou také užitečné při údržbě kódu.
  • ReactJS je open-source JavaKnihovna skriptů, takže je snadné s ní začít.
  • ReactJS se stal velmi populárním během krátké doby a pohání produkty jako Facebook a InstagramPoužívá ho mnoho slavných společností, jako je Apple, Netflix, Etc.
  • Meta udržuje knihovnu ReactJS, takže je dobře udržovaná a aktualizovaná.
  • ReactJS lze použít k vývoji bohatého uživatelského rozhraní pro stolní i mobilní aplikace.
  • Snadné ladění a testování, protože většina kódování se provádí v JavaScénář spíše než v HTML.

Nevýhody ReactJS

Zde jsou nevýhody/nevýhody používání ReactJS:

  • Většina kódu je napsána v JSX, tj. HTML a CSS jsou součástí JavaSkript. Může to být docela matoucí, protože většina ostatních frameworků preferuje keeping HTML odděleně od JavaKód skriptu.
  • Velikost souboru ReactJS je poměrně velká.

S ohledem na kompromisy jste připraveni nastavit React. Nejrychlejší způsob, jak si to vyzkoušet, je přímo z CDN, kterou si probereme jako první; nastavení založená na npm pro reálné projekty budou následovat poté.

Pomocí ReactJS z CDN

Abychom mohli začít pracovat s Reactem, musíme nejprve přidat ReactJS na naši stránku. S ReactJS můžete snadno začít pracovat pomocí CDN. JavaSoubory skriptů, jak je uvedeno níže.

Pro získání odkazů na CDN přejděte na starší stránky s dokumentací k Reactu, tj. https://legacy.reactjs.org/docs/cdn-links.htmla požadované soubory jsou vysvětleny na následujícím obrázku.

Použití ReactJS z CDN - Dokumentace k Reactu Stránka s odkazy na CDN

Pro 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>

Pro 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>

Nahradit verze s verzí Reactu, kterou chcete pro react.development.js i react-dom.development.js. Na této stránce používáme verzi 16, takže níže uvedené příklady fungují beze změny.

💡 Poznámka: Tyto UMD/CDN sestavení jsou starším přístupem, který funguje až do verze React 18 a je stále vhodný pro učení. React 19 již nedodává UMD sestavení a React 18+ byl nahrazen. ReactDOM.render s createRoot — viz část o verzích Reactu na konci této stránky.

Pokud plánujete používat soubory CDN, nezapomeňte zachovat atribut crossorigin, abyste předešli problémům s navzájemným přenosem. Kód ReactJS nelze spustit přímo v prohlížeči a je nutné jej převést pomocí Babelu do prostého kódu. JavaSkript před spuštěním v prohlížeči.

Zde je skript BabelJS, který lze použít:

<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

Zde je funkční příklad ReactJS s použitím CDN souborů a skriptu BabelJS.

<!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/babel-standalone@6.15.0/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>

Výstup:

Výstup Hello World z příkladu ReactJS založeného na CDN

V další kapitole se podíváme na detaily kódu; podívejme se na práci se soubory CDN. Přímé používání skriptu Babel není dobrým postupem a nováčci by ho prozatím měli používat pouze k učení se ReactJS. V produkčním prostředí budete muset React nainstalovat pomocí balíčku npm.

Použití balíčků NPM

Ujistěte se, že máte nainstalovaný Node.js. Pokud ho nemáte, přečtěte si tento tutoriál pro Node.js (https://www.guru99.com/node-js-tutorial.html) instalace.

Jakmile máte nainstalovaný Node.js, vytvořte složku reagovatproj/.

Chcete-li začít s nastavením projektu, spusťte příkaz npm init.

Takto bude vypadat struktura složek:

reactproj\
package.json

Nyní nainstalujeme balíčky, které potřebujeme.

Zde je seznam balíčků pro ReactJS. React jsme připnuli k verzi 16, takže ReactDOM.render příklady na této stránce fungují přesně tak, jak je znázorněno:

npm install react@16 --save
npm install react-dom@16 --save
npm install react-scripts --save

Otevřete příkazový řádek a spusťte výše uvedené příkazy ve složce reactproj/.

Vytvořte složku src / kam se bude ukládat veškerý JS kód. Veškerý kód pro projekt ReactJS bude k dispozici ve složce src/. Vytvořte soubor index.js a importujte react a react-dom, jak je znázorněno níže.

index.js

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

Napsali jsme základní kód pro ReactJS. Podrobnosti si vysvětlíme v další kapitole. Chceme zobrazit Ahoj, z Guru99 návody, a totéž je přiřazeno elementu DOM s ID „root“. Je převzato ze souboru index.html, což je počáteční soubor, jak je znázorněno níže.

Vytvořte složku public/ a přidejte do ní soubor index.html, jak je znázorněno níže.

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
   </body>
</html>

Balíček react-scripts se postará o kompilaci kódu a spuštění serveru pro zobrazení HTML souboru, tj. index.html. Do package.json je třeba přidat příkaz, který se postará o použití react-scripts pro kompilaci kódu a spuštění serveru, jak je znázorněno níže:

 "scripts": {
    "start": "react-scripts start"
  }

Po instalaci všech balíčků a přidání výše uvedeného příkazu je výsledný soubor package.json následující:

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"
  }
}

Chcete-li zahájit testování ReactJS, spusťte příkaz:

npm run start
C:\reactproj>npm run start
> reactproj@1.0.0 start C:\reactproj
> react-scripts start

Otevře se prohlížeč s URL http://localhost:3000/ jak je uvedeno níže:

public/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
  </body>
</html>

Výstup prohlížeče po spuštění projektu React založeného na npm

Stejný postup použijeme k provedení JavaSoubory skriptů také v následujících kapitolách. Všechny soubory .js a .jsx přidejte do složky src/. Struktura souborů bude následující:

reactproj/
	 src/
	    index.js
	 node_modules/
	 public/
                index.html
	 package.json

Jak vytvořit nastavení prvního projektu React

Zde je podrobný návod v tomto tutoriálu ReactJS, jak začít s první aplikací React.

Krok 1) Importujte balíčky reakcí.
1. Chcete-li začít s ReactJS, musíme nejprve importovat balíčky reakce následovně.

import React from 'react';
import ReactDOM from 'react-dom';

2. Uložte soubor jako index.js do složky src/.

Krok 2) Pište jednoduše Code.
V tomto tutoriálu React JS napíšeme jednoduchý kód, ve kterém zobrazíme zprávu „Dobrý den, z Guru99 tutoriálů!

ReactDOM.render(

<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

ReactDOM.render přidá tag k elementu s ID root. Zde je HTML soubor, který máme:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ReactJS Demo</title>
  </head>
  <body>
    <div id = "root"></div>
  </body>
</html>

Krok 3) Zkompilujte Code.

Dále v tomto tutoriálu React.js musíme zkompilovat kód, abychom získali výstup v prohlížeči.

Zde je struktura složek:

reactproj/
     node_modules/
     src/
       index.js
     package.json
     public/
          index.html

Přidali jsme příkazy pro kompilaci konečného souboru v package.json následovně:

"scripts": {
    "start": "react-scripts start"
  },

Pro kompilaci finálního souboru spusťte následující příkaz:

npm run start

Po spuštění výše uvedeného příkazu se soubory zkompilují a upozorní vás na případnou chybu. Pokud vše vypadá v pořádku, otevře se prohlížeč a stránka se spustí na adrese http://localhost:3000/

Příkaz: npm spuštění spuštění:

C:\reactproj>npm run start

> reactproj@1.0.0 start C:\reactproj
> react-scripts start

Krok 4) Zkontrolujte výstup.
Jedno URL http://localhost:3000 se po kompilaci kódu otevře v prohlížeči, jak je znázorněno níže:

Výstup projektu First React v prohlížeči

Jak nastavit React s Vite (moderní přístup)

Výše uvedené nastavení react-scripts pochází z nástroje Create React App (CRA), který byl po léta standardním nástrojem. Tým React oficiálně ukončil Create React App v únoru 2025, takže nové projekty by měly místo toho používat moderní nástroj pro sestavování. Nejoblíbenější volbou je dnes Žije, který se spouští rychleji a vytváří menší sestavení.

Zde je návod, jak vytvořit nový projekt v Reactu pomocí Vite:

Krok 1) Spusťte příkaz scaffolding ve svém terminálu:

npm create vite@latest my-react-app -- --template react

Krok 2) Přesuň se do složky a nainstaluj závislosti:

cd my-react-app
npm install

Krok 3) Spusťte vývojový server:

npm run dev

Vite nabízí aplikaci na adrese http://localhost:5173/ ve výchozím nastavení se znovu načte při uložení souboru.

Klíčové rozdíly oproti staršímu nastavení na této stránce:

  • Vstupní soubor je src/main.jsx místo src/index.js.
  • Nainstaluje nejnovější React, který používá createRoot místo ReactDOM.render.
  • Soubor index.html se nachází v kořenovém adresáři projektu, nikoli v public/.
  • Stavby se vyrábějí s npm run build do složky dist/.

Pro full-stack potřeby, jako je směrování a vykreslování serveru, tým React také doporučuje frameworky jako Další.jsVšechno, co se naučíte v následujících kapitolách – JSX, komponenty, stav a props – platí beze změny v projektu Vite nebo Next.js.

Co je JSX?

JSX je rozšíření pro JavaSkript. Jedná se o šablonový skript, ve kterém budete moci používat HTML a JavaSpolečně napište scénář.

Zde je jednoduchý příklad kódu JSX.

const h1tag = "<h1>Hello, from Guru99 Tutorials!</h1>";

Proč potřebujeme JSX v Reactu?

Pro uživatelské rozhraní potřebujeme HTML a každý prvek v DOM bude mít události, které bude třeba zpracovávat, změny stavu atd.

V případě Reactu nám to umožňuje používat HTML a JavaSkriptujte ve stejném souboru a efektivně se starajte o změny stavu v DOMu.

Výrazy v JSX

Zde je jednoduchý příklad, jak používat výrazy v JSX.

V dřívějších příkladech ReactJS jsme napsali něco jako:

index.js

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
    document.getElementById('root')
);

Nyní upravíme výše uvedený kód tak, aby obsahoval výrazy. Výrazy se používají uvnitř složených závorek {} a během běhu se rozšiřují. Výrazy v Reactu jsou stejné jako JavaVýrazy skriptu.

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')
);

Nyní totéž otestujeme v prohlížeči.

Výrazy v JSX - výstup nenahrazeného výrazu v prohlížeči

Na výše uvedeném snímku obrazovky vidíte, že výraz {display} není nahrazen. React neví, co dělat, když je výraz použit uvnitř souboru .js.

Nyní přidejte změny a vytvořte soubor .jsx, jak je znázorněno níže:

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;

Přidali jsme požadovaný kód a použijeme soubor test.jsx v index.js. Chceme, aby h1tag proměnná, která se má použít uvnitř index.js, takže se exportuje, jak je znázorněno výše v test.jsx.

Zde je upravený kód v index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import h1tag from './test.jsx';

ReactDOM.render(
    h1tag,
    document.getElementById('root')
);

Abychom mohli použít soubor test.jsx v index.js, musíme jej nejprve importovat, jak je znázorněno níže:

import h1tag from './test.jsx';

Nyní můžeme použít h1tag v ReactDOM.render, jak je znázorněno níže:

ReactDOM.render(
    h1tag,
    document.getElementById('root')
);

Zde je výstup, když totéž zkontrolujeme v prohlížeči:

Výraz JSX se v prohlížeči správně vykresluje

Co jsou komponenty v ReactJS?

Komponenty jsou jako čisté JavaSkriptové funkce, které usnadňují kód rozdělením logiky do opakovaně použitelného nezávislého kódu.

Komponenty jako funkce

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;

Vytvořili jsme funkci tzv Ahoj která vrací tag h1, jak je znázorněno výše. Název funkce funguje jako element, jak je znázorněno níže:

const Hello_comp = <Hello />;
export default Hello_comp;

Součást Ahoj používá se jako HTML tag, tj. , přidělený k Hello_comp proměnná a ta se exportuje pomocí exportu.

Nyní použijeme tuto komponentu v souboru index.js, jak je znázorněno níže:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Zde je výstup v prohlížeči:

Výstup funkční komponenty v ReactJS

Třída jako komponenta

Zde je příklad ReactJS, který používá třídu jako komponentu.

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;

Komponentu Hello v souboru index.js můžeme použít takto:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';

ReactDOM.render(
    <Hello />,
    document.getElementById('root')
);

Komponenta Hello se používá jako HTML tag, tj. .

Zde je výstup téhož.

Výstup třídy jako komponenty v prohlížeči

Komponenty třídy vs. funkční komponenty a hooky

Nyní jste viděli oba způsoby, jak napsat komponentu, takže který byste měli použít? Tato stránka učí komponenty třídy, protože explicitně popisují koncepty stavu a životního cyklu, což je cenné pro začátečníky a stále se objevuje ve starších kódových bázích. Od zavedení hooků v Reactu 16.8 však mohou funkční komponenty také uchovávat stav a jsou doporučeným stylem pro veškerý nový kód.

Vzhled Komponenta třídy Funkční komponenta s hooky
Stát this.state a this.setState() useState() Hook
Životní cyklus componentDidMount, componentDidUpdate, componentWillUnmount useEffect() Hook pokrývá všechny tři
Syntax Více standardního kódu (konstruktor, bind, this) Kratší, žádné toto klíčové slovo
Status Podporované, starší styl Doporučeno pro nový kód

Zde je příklad stavu z této stránky přepsaný pomocí hooku useState:

import React, { useState } from 'react';

function Hello() {
  const [msg] = useState("Hello, from Guru99 Tutorials!");
  return <h1>{msg}</h1>;
}
export default Hello;

Obě verze vykreslují stejný výstup. Naučte se syntaxi tříd použitou v následujících kapitolách a poté si procvičte převod každého příkladu na hooky.

Co je to stát v ReactJS?

Stát je JavaObjekt skriptu, podobný props, který obsahuje data pro použití s ​​renderováním ReactJS. Stavová data jsou privátní objekt a používají se v komponentách uvnitř třídy.

Příklad státu

Zde je funkční příklad, jak použít stav uvnitř třídy.

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')
);

Toto dostaneme, když to otestujeme v prohlížeči:

Stav ve výstupu ReactJS zobrazující zprávu ze stavu

Co jsou rekvizity v ReactJS?

Props jsou vlastnosti, které se používají uvnitř komponenty. Fungují jako globální objekty nebo proměnné, které lze použít uvnitř komponenty.

Podpěry k funkčnímu komponentu

Zde je příklad předání rekvizit funkční komponentě.

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;

Jak je uvedeno výše, přidali jsme msg připisovat komponenta. Stejný přístup lze provést jako rekvizity uvnitř funkce Hello, což je objekt, který bude mít msg podrobnosti atributu a totéž se používá jako výraz.

Komponenta se v index.js používá následovně:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Zde je výstup v prohlížeči:

Výstup rekvizit do funkční komponenty v prohlížeči

Rekvizity ke komponentě třídy

Pro přístup k propsům ve třídě to můžeme udělat následovně:

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;

Jedno msg atribut je předán komponentě v index.js takto:

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')
);

Toto je výstup v prohlížeči:

Výstup rekvizit do komponenty třídy v prohlížeči

Zkontrolujte také: - Výukový program AngularJS pro začátečníky: Naučte se AngularJS krok za krokem

Životní cyklus součásti

Po probrání komponent, stavu a vlastností je dalším krokem pochopení, kdy React volá metody vaší komponenty. Životní cyklus komponenty je rozdělen na fáze inicializace, připojení, aktualizace a odpojení.

Zde je podrobný popis každé fáze.

Komponenta v ReactJS má následující fáze:

Inicializace: Toto je první fáze životního cyklu součásti.

Zde bude mít výchozí rekvizity a stav na počáteční úrovni.

MontážV této fázi je komponenta vykreslena uvnitř DOMu. V připojovaném stavu máme přístup k následujícím metodám:

  • render(): Tuto metodu máte k dispozici pro všechny vytvořené komponenty. Vrací HTML uzel.
  • componentDidMount(): Tato funkce se volá ihned po přidání komponenty do DOMu.

AktualizaceV tomto stavu uživatel interaguje s DOMem a ten se aktualizuje. Například zadáte něco do textového pole, takže se aktualizují vlastnosti stavu.

Následující metody jsou k dispozici ve stavu aktualizace:

  • shouldComponentUpdate(): volá se před opětovným vykreslením; umožňuje rozhodnout, zda se má komponenta aktualizovat. Vrácení hodnoty true znovu vykreslí komponentu.
  • componentDidUpdate(): volá se po aktualizaci komponenty.

Demontáž: Tento stav nastává, když komponenta není potřeba nebo je odstraněna.

Následuje metoda dostupná ve stavu odpojení:

  • componentWillUnmount(): volá se těsně před odstraněním nebo zničením komponenty.

Pracovní příklad metod životního cyklu

Zde je funkční příklad, který ukazuje metody volané v každé fázi.

Příklad: 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')
);

Když zkontrolujete výstup v prohlížeči:

Příklad životního cyklu vykreslený v prohlížeči

V konzoli prohlížeče získáte:

Výstup konzole prohlížeče zobrazující zprávu componentDidMount

Když uživatel zadá do textového pole:

Aktualizace stavu komponenty vstupu textového pole

V konzoli se zobrazují následující zprávy:

Výstup konzole zobrazující spouštění metod životního cyklu aktualizace

Nyní, když víte, kdy se komponenta vykresluje a aktualizuje, aplikujme stavy a události na praktický případ použití: zpracování uživatelského vstupu prostřednictvím formulářů.

Práce s formuláři

V ReactJS, vstupní prvky HTML jako , a <select /> mají svůj vlastní stav a je třeba je aktualizovat při interakci uživatele pomocí metody setState().

V této kapitole se podíváme na to, jak pracovat s formuláři v ReactJS.

Zde je pracovní příklad:

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;

U vstupních polí potřebujeme zachovat stav, takže k tomu React poskytuje speciální metodu s názvem setState, což pomáhá udržovat stav vždy, když dojde ke změně. V reálné aplikaci také volejte event.preventDefault() uvnitř formSubmit, aby se zabránilo opětovnému načtení stránky prohlížečem při odeslání.

Použili jsme události onChange a onClick pro textové pole a tlačítko pro odeslání. Když uživatel zadá text do textového pole, zavolá se událost onChange a pole name uvnitř objektu state se aktualizuje, jak je znázorněno níže:

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')
);

Výstup v prohlížeči je následující:

Práce s formuláři - počáteční výstup formuláře

Krok 1) Zadejte své jméno do textového pole:

Práce s formuláři - jméno zadané do textového pole

Krok 2) Klikněte na tlačítko odeslat:

Práce s formuláři - upozornění zobrazené po odeslání

Práce s událostmi v ReactJS

Formuláře jsou pouze jedním ze zdrojů interakce s uživatelem. Práce s událostmi v ReactJS je stejná, jako byste to dělali v JavaSkript. Můžete použít všechny obslužné rutiny událostí, které se používají ve JavaSkript. Metoda setState() se používá k aktualizaci stavu, když uživatel interaguje s jakýmkoli HTML elementem.

Zde je funkční příklad, jak používat události v 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;

U vstupních polí potřebujeme zachovat stav, takže k tomu React poskytuje setState metoda, která pomáhá udržovat stav vždy, když dojde ke změně.

Využili jsme události při změně a onclick na textovém poli a tlačítku. Když uživatel píše do textového pole, při změně událost je volána a pole name uvnitř objektu state je aktualizováno, jak je znázorněno níže:

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')
);

Zde je výstup v prohlížeči:

Práce s událostmi - počáteční výstup v prohlížeči

Když uživatel zadá jméno:

Práce s událostmi – jméno zobrazené jako uživatelské zadání

Když uživatel klikne na tlačítko Klikněte sem:

Práce s událostmi - upozornění zobrazené po kliknutí na tlačítko

Práce s Inline CSS v ReactJS

Jakmile vaše komponenty zpracují data a události, posledním krokem je jejich stylování. Podíváme se na funkční příklad, abychom pochopili inline CSS v 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;

Do tagu h1 jsem přidal styl color: 'red'.

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';

ReactDOM.render(
    Hello_comp,
    document.getElementById('root')
);

Výstup v prohlížeči je následující:

Práce s inline CSS - výstup s červeným nadpisem

Můžete vytvořit objekt se stylem, který chcete na elementu, a použít výraz k přidání stylu, jak je znázorněno ve výše uvedeném příkladu.

Práce s externím CSS v ReactJS

Vytvořme externí CSS soubor. Vytvořte složku css/ a přidejte do ní soubor style.css.

style.css

.h1tag {
color:red;
}

Přidejte styl.css do svého souboru index.html

<!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>

Nyní přidejme třídu do tagu h1 v souboru .jsx.

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')
);

Atribut className obsahuje podrobnosti o třídě. Všimněte si, že JSX používá jméno třídy místo atributu class v HTML, protože class je rezervované klíčové slovo v JavaSkript. Nyní si ho otestujme v prohlížeči.

Práce s externím CSS - stylizovaný výstup nadpisů

Toto vidíte, když si v prohlížeči prohlédnete tag h1:

Práce s externím CSS - kontrolovaný tag h1 zobrazující třídu

Vidíte, že třída class=”h1tag” byla úspěšně přidána do tagu h1.

Proč byl ReactDOM.render nahrazen createRoot

Každý příklad na této stránce připojuje aplikaci pomocí ReactDOM.render, což je správné pro React 16 a 17, verze, na které je tento kurz zaměřen. React 18, vydaný v březnu 2022, nahradil tento vstupní bod rozhraním createRoot API a React 19 ReactDOM.render zcela odstranil. Důvodem je souběžnost: createRoot umožňuje Reactu připravit několik verzí uživatelského rozhraní současně, přerušit vykreslování s nízkou prioritou a udržovat ty...ping a animace plynulé. Funkce jako automatické dávkování, useTransition a streamování založené na napětí jsou na tom závislé.

Moderní ekvivalent index.js použitého na této stránce vypadá takto:

import { createRoot } from 'react-dom/client';

const root = createRoot(document.getElementById('root'));
root.render(<h1>Hello, from Guru99 Tutorials!</h1>);

Všechno ostatní, co jste se zde naučili – komponenty, JSX, stav, vlastnosti a události – funguje stejně i po této jednořádkové změně v vstupním bodě. Rozdíly ve verzích, jako je tento, se často objevují v Otázky na pohovoru s React JS, takže se vyplatí porozumět oběma API.

Nejčastější dotazy

ReactJS je knihovna, nikoli plnohodnotný framework. Zaměřuje se pouze na tvorbu uživatelského rozhraní. Pro směrování, načítání dat a vykreslování na serveru jej vývojáři kombinují s nástroji, jako je React Router, nebo frameworky jako… Další.js.

S pevnou látkou JavaZáklady skriptování, většina studentů zvládne komponenty, JSX, state a props během dvou až čtyř týdnů pravidelného procvičování. Příprava na práci, včetně hooků, směrování a volání API, obvykle trvá dva až tři měsíce tvorby malých projektů.

ReactJS vykresluje webové stránky do DOM prohlížeče, zatímco React Native používá stejný komponentní model pro tvorbu nativních aplikací pro iOS a... Android aplikace. Dovednosti se mezi nimi přenášejí, ale React Native nahrazuje HTML tagy nativními UI komponentami.

Ano. Asistenti jako například GitHub Copilot a ChatGPT dokáže vytvářet komponenty, vysvětlovat chyby a převádět komponenty třídy na hooky. Vždy kontrolujte vygenerovaný kód, protože umělá inteligence může navrhovat zastaralá API, jako je ReactDOM.render.

V blízké budoucnosti nepravděpodobné. Umělá inteligence zrychluje rutinní kódování, ale vývojáři jsou stále potřeba k návrhu architektury komponent, správě stavu v rámci aplikace, kontrole přístupnosti a ladění produkčních problémů. Učení se Reactu a pracovním postupům s podporou umělé inteligence vás činí hodnotnějšími, ne méně.

Zkontrolujte také: - 70 nejčastějších otázek a odpovědí v pohovoru React (aktualizováno)

Shrňte tento příspěvek takto: