Tutorial ReactJS pentru începători

⚡ Rezumat inteligent

ReactJS este utilizat pentru interfețele utilizator ale nenumăratelor site-uri web și aplicații mobile moderne. Această pagină explică ce este biblioteca, cum se configurează și cum funcționează împreună componentele, JSX-ul, starea, prop-urile și evenimentele.

  • ⚛️ Foundation: ReactJS este o platformă open-source, bazată pe componente JavaBibliotecă de scripturi creată la Facebook (acum Meta) pentru construirea de interfețe utilizator rapide și interactive.
  • 🧩 Componente: Blocurile de construcție reutilizabile, scrise ca funcții sau clase, împart logica interfeței utilizator în părți independente și ușor de întreținut.
  • 📝 JSX: A JavaExtensia de sintaxă Script vă permite să scrieți markup și expresii de tip HTML în același fișier.
  • 🔄 Stare și propuneri: State stochează date private, schimbătoare, în interiorul unei componente, în timp ce prop-urile transmit date doar pentru citire în aceasta.
  • ⚙️ Căi de configurare: Etichetele de script CDN sunt potrivite pentru experimente rapide; pachetele npm sau Vite sunt potrivite pentru proiecte reale.
  • 🚀 Practică modernă: Componentele funcționale cu Hook-uri și API-ul createRoot pentru React 18+ sunt acum standardul recomandat.
  • 💼 Impactul carierei: Abilitățile React rămân printre cele mai solicitate în ofertele de muncă pentru dezvoltatori front-end la nivel mondial.

Tutorial ReactJS pentru începători: Învață elementele de bază ale React pas cu pas

Ce este ReactJS?

ReactJS este un front-end open-source JavaBibliotecă de scripturi pentru construirea de interfețe cu utilizatorul. ReactJS este întreținut de Meta (fostul Facebook) și de o comunitate de dezvoltatori individuali și companii. Este utilizat pe scară largă ca bază în construirea de aplicații cu o singură pagină și aplicații mobile. Este foarte ușor de utilizat și permite utilizatorilor să creeze componente reutilizabile pentru interfața utilizator.

Înainte de a scrie prima linie de cod React, este util să știi ce diferențiază biblioteca de codul simplu. JavaScript. Următoarea secțiune prezintă caracteristicile sale principale.

Caracteristicile ReactJS

JSX: JSX este o extensie a JavaScript. Deși nu este obligatoriu să folosești JSX în React, este una dintre caracteristicile bune și ușor de utilizat.

Componente: Componentele sunt ca pure JavaFuncții de script care ajută la simplificarea codului prin divizarea logicii în cod independent reutilizabil. Putem folosi componentele ca funcții și componentele ca clase. Componentele au, de asemenea, stare și elemente de recuzită, ceea ce simplifică viața. În interiorul unei componente de clasă, starea și elementele de recuzită sunt menținute.

DOM virtual: React creează un DOM virtual, adică o memorie cache a structurii de date în memorie. Doar modificările finale sunt actualizate ulterior în DOM-ul browserului, care continuă să fie randat rapid.

JavaExpresii de script: Expresiile JS pot fi utilizate în fișierele JSX folosind acolade spiralate, de exemplu {}.

Avantajele ReactJS

Iată câteva avantaje/beneficii importante ale utilizării ReactJS:

  • ReactJS folosește un DOM virtual care utilizează o memorie cache a structurii de date în memorie, iar doar modificările finale sunt actualizate în DOM-ul browserului. Acest lucru face aplicația mai rapidă.
  • Puteți crea componente la alegere folosind funcția de componente React. Componentele pot fi reutilizate și sunt utile și în întreținerea codului.
  • ReactJS este open-source JavaBibliotecă de scripturi, deci este ușor să începeți cu ea.
  • ReactJS a devenit foarte popular într-o perioadă scurtă de timp și susține produse precum Facebook și InstagramEste folosit de multe companii celebre precum Apple, Netflix, Etc
  • Meta întreține biblioteca ReactJS, deci aceasta este bine întreținută și actualizată.
  • ReactJS poate fi folosit pentru a dezvolta o interfață de utilizare bogată atât pentru desktop, cât și pentru aplicații mobile.
  • Ușor de depanat și testat, deoarece cea mai mare parte a codării este realizată JavaScenariu mai degrabă decât în ​​HTML.

Dezavantajele lui ReactJS

Iată dezavantajele/dezavantajele utilizării ReactJS:

  • Cea mai mare parte a codului este scrisă în JSX, adică HTML și CSS fac parte din JavaScript. Poate fi destul de confuz, deoarece majoritatea celorlalte framework-uri preferă keeping HTML separat de JavaCod script.
  • Dimensiunea fișierului ReactJS este relativ mare.

Cunoscând compromisurile, ești gata să configurezi React. Cea mai rapidă modalitate de a încerca acest lucru este direct dintr-o CDN, lucru pe care îl vom aborda mai întâi; după aceea urmează configurările bazate pe npm pentru proiecte reale.

Folosind ReactJS de la CDN

Pentru a începe să lucrăm cu React, trebuie mai întâi să adăugăm ReactJS la pagina noastră. Puteți începe cu ușurință să utilizați ReactJS cu CDN-ul. JavaFișiere script, așa cum se arată mai jos.

Accesați site-ul de documentație React existent pentru a obține linkurile CDN, de exemplu, https://legacy.reactjs.org/docs/cdn-links.htmlși veți obține fișierele necesare explicate în imaginea următoare.

Utilizarea ReactJS din CDN - Pagina de linkuri CDN pentru documentația React

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

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

Înlocui versiune cu versiunea de React dorită atât pentru react.development.js, cât și pentru react-dom.development.js. Folosim versiunea 16 pe această pagină, așa că exemplele de mai jos rulează neschimbate.

💡 Notă: Aceste versiuni UMD/CDN reprezintă o abordare moștenită care funcționează până la React 18 și este încă suficientă pentru învățare. React 19 nu mai oferă versiuni UMD, iar React 18+ le-a înlocuit. ReactDOM.render implementate cu createRoot — consultați secțiunea despre versiunile React de la sfârșitul acestei pagini.

În cazul în care intenționați să utilizați fișierele CDN, asigurați-vă că păstrați atributul crossorigin pentru a evita problemele cross-domain. Codul ReactJS nu poate fi executat direct în browser și trebuie transpilat folosind Babel pentru a fi simplificat. JavaScript înainte de executarea în browser.

Iată scriptul BabelJS care poate fi folosit:

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

Iată exemplul funcțional ReactJS folosind fișiere CDN și scriptul 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>

ieșire:

Rezultatul Hello World al exemplului ReactJS bazat pe CDN

Vom intra în detaliile codului în capitolul următor; haideți să vedem cum se lucrează aici cu fișiere CDN. Utilizarea directă a scriptului Babel nu este o practică bună, iar începătorii ar trebui să îl folosească doar pentru a învăța ReactJS deocamdată. În producție, va trebui să instalați React folosind pachetul npm.

Utilizarea pachetelor NPM

Asigurați-vă că aveți Node.js instalat. Dacă nu este instalat, parcurgeți acest tutorial pentru Node.js (https://www.guru99.com/node-js-tutorial.html) instalare.

După ce ați instalat Node.js, creați un folder reactproj/.

Pentru a începe cu configurarea proiectului, executați comanda npm init.

Iată cum va arăta structura folderelor:

reactproj\
package.json

Acum vom instala pachetele de care avem nevoie.

Iată lista de pachete pentru ReactJS. Am adăugat React la versiunea 16, astfel încât ReactDOM.render Exemplele de pe această pagină funcționează exact așa cum se arată:

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

Deschideți promptul de comandă și executați comenzile de mai sus în folderul reactproj/.

Creați un folder src / unde va merge tot codul JS. Tot codul pentru proiectul ReactJS va fi disponibil în folderul src/. Creați un fișier index.js și importați react și react-dom, așa cum se arată mai jos.

index.js

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

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

Am scris codul de bază pentru ReactJS. Vom explica detaliile acestuia în capitolul următor. Dorim să afișăm Salut, de la Guru99 tutoriale, iar același lucru este atribuit elementului DOM cu ID-ul „root”. Este preluat din fișierul index.html, care este fișierul de pornire, așa cum se arată mai jos.

Creați un folder public/ și adăugați index.html în el, așa cum se arată mai jos.

index.html

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

Pachetul react-scripts se va ocupa de compilarea codului și de pornirea serverului pentru a afișa fișierul HTML, adică index.html. Trebuie să adăugați comanda în package.json care se va ocupa de utilizarea react-scripts pentru a compila codul și a porni serverul, așa cum se arată mai jos:

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

După instalarea tuturor pachetelor și adăugarea comenzii de mai sus, pachetul final.json este următorul:

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

Pentru a începe testarea ReactJS, executați comanda:

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

Va deschide browserul cu URL http://localhost:3000/ după cum se arată mai jos:

public/index.html

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

Rezultatul browserului după rularea proiectului React bazat pe npm

Vom folosi același proces pentru a executa JavaFișiere script și în următoarele capitole. Adăugați toate fișierele .js și .jsx în folderul src/. Structura fișierelor va fi următoarea:

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

Cum să vă creați primul proiect React

Iată un ghid pas cu pas în acest Tutorial ReactJS pentru a începe cu prima aplicație React.

Pas 1) Importați pachetele react.
1. Pentru a începe cu ReactJS, trebuie să importam mai întâi pachetele react după cum urmează.

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

2. Salvați fișierul ca index.js în folderul src/.

Pas 2) Scrie simplu Code.
Vom scrie un cod simplu în acest tutorial React JS, în care vom afișa mesajul „Bună ziua, de la Guru99 de tutoriale!

ReactDOM.render(

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

ReactDOM.render va adăuga etichetă la elementul cu id-ul root. Iată fișierul HTML pe care îl avem:

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

Pas 3) Compilați Code.

În continuare, în acest tutorial React.js, trebuie să compilam codul pentru a obține rezultatul în browser.

Iată structura folderului:

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

Am adăugat comenzile pentru a compila fișierul final în package.json, după cum urmează:

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

Pentru a compila fișierul final, executați următoarea comandă:

npm run start

Când executați comanda de mai sus, fișierele vor fi compilate și vă vor notifica dacă există vreo eroare. Dacă totul pare în regulă, va deschide browserul și va rula pagina la adresa http://localhost:3000/

Comanda: npm run start:

C:\reactproj>npm run start

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

Pas 4) Verificați ieșirea.
URL http://localhost:3000 se va deschide în browser odată ce codul este compilat, așa cum se arată mai jos:

Rezultatul primului proiect React în browser

Cum se configurează React cu Vite (abordare modernă)

Configurația react-scripts de mai sus provine de la Create React App (CRA), care a fost instrumentul standard de pornire timp de ani de zile. Echipa React a dezaprobat oficial Create React App în februarie 2025, așa că proiectele noi ar trebui să utilizeze în schimb un instrument de construire modern. Cea mai populară alegere astăzi este Vieți, care pornește mai repede și produce construcții mai mici.

Iată cum se creează un proiect React nou cu Vite:

Pas 1) Executați comanda scaffolding în terminal:

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

Pas 2) Mută-te în folder și instalează dependențele:

cd my-react-app
npm install

Pas 3) Porniți serverul de dezvoltare:

npm run dev

Vite difuzează aplicația la http://localhost:5173/ în mod implicit și se reîncarcă instantaneu când salvați un fișier.

Diferențe cheie față de configurația mai veche de pe această pagină:

  • Fișierul de intrare este src/main.jsx în loc de src/index.js.
  • Instalează cea mai recentă versiune de React, care folosește creațiRădăcină în loc de ReactDOM.render.
  • index.html se află în rădăcina proiectului, nu în public/.
  • Construcțiile sunt produse cu npm run build într-un folder dist/.

Pentru nevoi full-stack, cum ar fi rutarea și randarea serverului, echipa React recomandă și framework-uri precum Next.jsTot ce înveți în capitolele de mai jos — JSX, componente, stare și elemente de recuzită — se aplică neschimbat într-un proiect Vite sau Next.js.

Ce este JSX?

JSX este o extensie a JavaScript. Este un script șablon în care veți avea puterea de a utiliza HTML și JavaScrieți scenariul împreună.

Iată un exemplu simplu de cod JSX.

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

De ce avem nevoie de JSX în React?

Pentru o interfață utilizator, avem nevoie de HTML, iar fiecare element din DOM va avea evenimente de gestionat, schimbări de stare etc.

În cazul React, ne permite să folosim HTML și JavaScrieți scriptul în același fișier și gestionați schimbările de stare din DOM într-un mod eficient.

Expresii în JSX

Iată un exemplu simplu de utilizare a expresiilor în JSX.

În exemplele anterioare de ReactJS, am scris ceva de genul:

index.js

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

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

Acum vom modifica codul de mai sus pentru a adăuga expresii. Expresiile sunt folosite între acolade {} și sunt extinse în timpul execuției. Expresiile din React sunt aceleași ca JavaExpresii de script.

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

Să testăm acum același lucru în browser.

Expresii în JSX - ieșire expresie neînlocuită în browser

În captura de ecran de mai sus puteți vedea că expresia {display} nu este înlocuită. React nu știe ce să facă atunci când o expresie este utilizată într-un fișier .js.

Să adăugăm acum modificări și să creăm un fișier .jsx, după cum se arată mai jos:

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;

Am adăugat codul necesar și vom folosi fișierul test.jsx în index.js. Vrem ca h1tag variabilă care va fi utilizată în index.js, deci aceasta este exportată așa cum se arată mai sus în test.jsx.

Iată codul modificat în index.js:

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

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

Pentru a utiliza fișierul test.jsx în index.js, trebuie să îl importăm mai întâi, așa cum se arată mai jos:

import h1tag from './test.jsx';

Putem folosi h1tag acum în ReactDOM.render așa cum se arată mai jos:

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

Iată rezultatul când verificăm același lucru în browser:

Expresia JSX redată corect în browser

Ce sunt componentele în ReactJS?

Componentele sunt ca pure JavaFuncții de script care ajută la simplificarea codului prin divizarea logicii în cod independent reutilizabil.

Componentele ca funcții

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;

Am creat o funcție numită Hei care returnează o etichetă h1, așa cum se arată mai sus. Numele funcției acționează ca un element, așa cum se arată mai jos:

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

Componenta Hei este folosit ca etichetă HTML, adică , atribuit Hello_comp variabilă, iar aceasta este exportată folosind export.

Să folosim acum această componentă în fișierul index.js, așa cum se arată mai jos:

index.js

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

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

Iată rezultatul din browser:

Ieșirea componentei funcționale în ReactJS

Clasă ca componentă

Iată un exemplu ReactJS care utilizează o clasă ca componentă.

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;

Putem folosi componenta Hello din fișierul index.js după cum urmează:

index.js

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

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

Componenta Hello este utilizată ca etichetă HTML, adică .

Aici este rezultatul aceluiași.

Clasă ca ieșire componentă în browser

Componente de clasă vs. componente de funcție și cârlige

Ați văzut acum ambele modalități de a scrie o componentă, așa că pe care ar trebui să o utilizați? Această pagină prezintă componentele clasei deoarece acestea explică conceptele de stare și ciclu de viață, ceea ce este valoros pentru începători și apare încă în bazele de cod vechi. Cu toate acestea, de când React 16.8 a introdus Hook-urile, componentele funcțiilor pot deține și starea, iar acestea sunt stilul recomandat pentru tot codul nou.

Aspect Componenta clasei Componentă funcțională cu cârlige
Stat this.state și this.setState() useState() Hook
Ciclul Vietii componentDidMount, componentDidActualizare, componentWillDemontare Funcția Hook useEffect() acoperă toate cele trei
Sintaxă Mai multe exemple standard (constructor, bind, this) Mai scurt, fără acest cuvânt cheie
Stare Stil moștenit, acceptat Recomandat pentru cod nou

Iată exemplul de stare de pe această pagină rescris cu ajutorul hook-ului useState:

import React, { useState } from 'react';

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

Ambele versiuni redau aceeași ieșire. Învățați sintaxa clasei utilizată în capitolele de mai jos, apoi exersați convertirea fiecărui exemplu în Hook-uri.

Ce este o stare în ReactJS?

Un stat este un JavaObiect script, similar cu props-urile, care conține date ce vor fi utilizate cu randarea ReactJS. Datele de stare sunt un obiect privat și sunt utilizate în componentele dintr-o clasă.

Exemplu de stat

Iată un exemplu practic despre cum se utilizează starea în interiorul unei clase.

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

Iată ce obținem când îl testăm în browser:

Stare în ieșirea ReactJS care afișează mesajul de la stare

Ce sunt elementele de recuzită în ReactJS?

Propurile sunt proprietăți care pot fi utilizate în interiorul unei componente. Ele acționează ca obiecte sau variabile globale care pot fi utilizate în interiorul componentei.

Recuzită pentru Componenta Funcțională

Iată un exemplu de transmitere a elementelor de recuzită către o componentă de funcție.

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;

După cum s-a arătat mai sus, am adăugat msg atribuie componentă. Aceeași componentă poate fi accesată ca recuzită în interiorul funcției Hello, care este un obiect care va avea msg detalii de atribut și același lucru este folosit ca expresie.

Componenta este utilizată în index.js după cum urmează:

index.js

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

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

Iată rezultatul din browser:

Recenzii pentru ieșirea componentei funcționale în browser

Recuzită pentru Componenta de clasă

Pentru a accesa recuzitele dintr-o clasă, putem face acest lucru în felul următor:

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 atributul este transmis componentului din index.js, după cum urmează:

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

Aceasta este rezultatul din browser:

Recenzii către ieșirea componentei de clasă în browser

Verificați și: - Tutorial AngularJS pentru începători: Învață AngularJS pas cu pas

Ciclul de viață al unei componente

Odată ce componentele, starea și prop-urile au fost acoperite, următorul pas este să înțelegem când React apelează metodele componentei. Ciclul de viață al unei componente este împărțit în etapele de Inițializare, Montare, Actualizare și Demontare.

Iată o explicație detaliată a fiecărei etape.

O componentă în ReactJS are următoarele etape:

Inițializarea: Aceasta este prima etapă a ciclului de viață al componentei.

Aici va avea recuzita implicită și starea la nivelul inițial.

MontareÎn această fază, componenta este randată în interiorul DOM-ului. Suntem expuși la următoarele metode în starea de montare:

  • render(): Aveți această metodă pentru toate componentele create. Returnează nodul HTML.
  • componentDidMount(): Aceasta este apelată imediat după ce componenta este adăugată în DOM.

ActualizeazăÎn această stare, utilizatorul interacționează cu DOM-ul și acesta este actualizat. De exemplu, dacă introduceți ceva în caseta de text, proprietățile stării sunt actualizate.

Următoarele sunt metodele disponibile în starea de actualizare:

  • shouldComponentUpdate(): apelat înainte de re-randare; vă permite să decideți dacă componenta ar trebui să se actualizeze. Returnarea valorii true re-randează componenta.
  • componentDidUpdate(): apelată după actualizarea componentei.

Demontare: Această stare apare atunci când componenta nu este necesară sau este îndepărtată.

Următoarea este metoda disponibilă în starea de demontare:

  • componentWillUnmount(): apelată chiar înainte ca componenta să fie eliminată sau distrusă.

Exemplu de lucru al metodelor ciclului de viață

Iată un exemplu funcțional care prezintă metodele apelate în fiecare etapă.

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

Când verificați rezultatul în browser:

Exemplu de ciclu de viață redat în browser

În consola browserului primești:

Rezultatul consolei browserului afișează mesajul componentDidMount

Când utilizatorul introduce în caseta text:

Introducerea în caseta de text actualizează starea componentei

În consolă, sunt afișate următoarele mesaje:

Ieșirea consolei care arată metodele de ciclu de viață al actualizării care se declanșează

Acum că știți când o componentă se randează și se actualizează, haideți să aplicăm starea și evenimentele unui caz practic de utilizare: gestionarea datelor introduse de utilizator prin intermediul formularelor.

Lucrul cu Formulare

În ReactJS, elementele de intrare HTML precum , și <select /> au propria stare și trebuie actualizate atunci când utilizatorul interacționează, folosind metoda setState().

În acest capitol, vom vedea cum se lucrează cu formulare în ReactJS.

Iată un exemplu de lucru:

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;

Pentru câmpurile de intrare, trebuie să menținem starea, așa că pentru asta React oferă o metodă specială numită setState, care ajută la menținerea stării ori de câte ori există o modificare. Într-o aplicație reală, apelați și event.preventDefault() în interiorul formSubmit pentru a împiedica browserul să reîncarce pagina la trimitere.

Am folosit evenimentele onChange și onClick pe caseta de text și butonul de trimitere. Când utilizatorul tastează în interiorul casetei de text, evenimentul onChange este apelat, iar câmpul name din obiectul de stare este actualizat, așa cum se arată mai jos:

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

Ieșirea în browser este după cum urmează:

Lucrul cu formulare - rezultatul inițial al formularului

Pas 1) Introduceți numele dvs. în caseta de text:

Lucrul cu formulare - nume introdus în caseta de text

Pas 2) Faceți clic pe butonul de trimitere:

Lucrul cu formulare - alertă afișată după trimitere

Lucrul cu evenimente în ReactJS

Formularele sunt doar o sursă de interacțiune cu utilizatorul. Lucrul cu evenimente în ReactJS este la fel ca în JavaScript. Puteți utiliza toate rutinele de gestionare a evenimentelor care sunt utilizate în JavaScript. Metoda setState() este utilizată pentru a actualiza starea atunci când utilizatorul interacționează cu orice element HTML.

Iată un exemplu practic despre cum se utilizează evenimentele în ReactJS.

evenimente.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;

Pentru câmpurile de intrare, trebuie să menținem starea, așa că React oferă setState metodă, care ajută la menținerea stării ori de câte ori există o schimbare.

Am folosit evenimentele noi schimbăm și onClick pe caseta de text și pe buton. Când utilizatorul tastează în interiorul casetei de text, noi schimbăm evenimentul este apelat, iar câmpul name din interiorul obiectului state este actualizat, așa cum se arată mai jos:

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

Iată rezultatul din browser:

Lucrul cu evenimente - rezultat inițial în browser

Când un utilizator introduce numele:

Lucrul cu evenimente - nume afișate ca tipuri de utilizatori

Când utilizatorul face clic pe butonul Click aici:

Lucrul cu evenimente - alertă afișată la clic pe buton

Lucrul cu CSS inline în ReactJS

Odată ce componentele tale gestionează datele și evenimentele, pasul final este stilizarea lor. Vom analiza un exemplu funcțional pentru a înțelege CSS-ul inline în 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;

Am adăugat culoarea „roșu” la eticheta h1.

index.js

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

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

Ieșirea în browser este după cum urmează:

Lucrul cu CSS Inline - ieșire cu antet roșu

Puteți crea un obiect cu stilul dorit pentru element și puteți utiliza o expresie pentru a adăuga stilul, așa cum se arată în exemplul de mai sus.

Lucrul cu CSS extern în ReactJS

Să creăm un fișier CSS extern. Pentru asta, creăm un folder css/ și adăugăm style.css în el.

style.css

.h1tag {
color:red;
}

Adăugați style.css în fișierul dvs. 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>

Acum să adăugăm clasa la eticheta h1 din fișierul .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')
);

Atributul className primește detaliile clasei. Rețineți că JSX folosește numele clasei în loc de atributul HTML class, deoarece class este un cuvânt cheie rezervat în JavaScript. Acum haideți să-l testăm în browser.

Lucrul cu CSS extern - ieșire stilizată a titlurilor

Iată ce vedeți când inspectați eticheta h1 în browser:

Lucrul cu CSS extern - eticheta h1 inspectată care arată clasa

Puteți vedea că class="h1tag" a fost adăugat cu succes la eticheta h1.

De ce a fost înlocuit ReactDOM.render de createRoot

Fiecare exemplu de pe această pagină montează aplicația cu ReactDOM.render, ceea ce este corect pentru React 16 și 17, versiunile vizate de acest curs. React 18, lansat în martie 2022, a înlocuit acel punct de intrare cu API-ul createRoot, iar React 19 a eliminat complet ReactDOM.render. Motivul este concurența: createRoot permite React să pregătească mai multe versiuni ale interfeței utilizator în același timp, să întrerupă randarea cu prioritate scăzută și să mențină typing și animații fluide. Funcții precum procesarea automată în loturi, useTransition și streamingul bazat pe suspans depind toate de acesta.

Echivalentul modern al fișierului index.js folosit pe această pagină arată astfel:

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

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

Tot ce ați învățat aici — componente, JSX, stare, elemente de recuzită și evenimente — funcționează la fel după această modificare dintr-o singură linie la punctul de intrare. Diferențele de versiune, cum ar fi aceasta, apar des în Întrebări de interviu React JS, așa că merită să înțelegeți ambele API-uri.

Întrebări frecvente

ReactJS este o bibliotecă, nu un framework complet. Se concentrează doar pe construirea interfeței utilizator. Pentru rutare, preluarea datelor și randarea pe server, dezvoltatorii îl combină cu instrumente precum React Router sau framework-uri precum Next.js.

Cu solid JavaNoțiuni de bază despre scripturi, majoritatea cursanților înțeleg componentele, JSX-ul, starea și prop-urile în două până la patru săptămâni de practică regulată. Pregătirea pentru job, inclusiv hook-uri, rutare și apeluri API, durează de obicei două până la trei luni de construire a unor proiecte mici.

ReactJS se redă în DOM-ul browserului pentru a construi site-uri web, în ​​timp ce React Native folosește același model de componente pentru a construi iOS nativ și Android aplicații. Transferul de competențe între cele două, dar React Native înlocuiește etichetele HTML cu componente native ale interfeței utilizator.

Da. Asistenți precum Copilotul GitHub și Chat GPT poate construi schele de componente, explica erorile și converti componentele clasei în Hook-uri. Revizuiți întotdeauna codul generat, deoarece inteligența artificială poate sugera API-uri învechite, cum ar fi ReactDOM.render.

Improbabil pe termen scurt. Inteligența artificială accelerează codarea de rutină, dar dezvoltatorii sunt în continuare nevoiți să proiecteze arhitectura componentelor, să gestioneze starea într-o aplicație, să revizuiască accesibilitatea și să depaneze problemele de producție. Învățarea React plus fluxurile de lucru asistate de inteligență artificială vă face mai valoroși, nu mai puțin valoroși.

Verificați și: - Top 70 de întrebări și răspunsuri la interviu React (Actualizat)

Rezumați această postare cu: