ReactJS-i õpetus algajatele

⚡ Nutikas kokkuvõte

ReactJS toetab lugematute tänapäevaste veebisaitide ja mobiilirakenduste kasutajaliidest. See leht selgitab, mis see teek on, kuidas seda seadistada ning kuidas komponendid, JSX, olek, rekvisiidid ja sündmused koos töötavad.

  • ⚛️ Foundation: ReactJS on avatud lähtekoodiga, komponentidel põhinev JavaFacebookis (nüüd Meta) loodud skriptiteek kiirete ja interaktiivsete kasutajaliideste loomiseks.
  • 🧩 Komponendid: Korduvkasutatavad ehitusplokid, mis on kirjutatud funktsioonide või klassidena, jagavad kasutajaliidese loogika sõltumatuteks ja hooldatavateks osadeks.
  • 📝 JSX: A JavaSkripti süntaksi laiendus võimaldab teil kirjutada HTML-laadset märgistust ja avaldisi samasse faili.
  • 🔄 Riik ja rekvisiidid: State salvestab komponendi sees privaatseid, muutuvaid andmeid, samas kui propsid edastavad sinna kirjutuskaitstud andmeid.
  • ⚙️ Seadistusteed: CDN-i skriptimärgendid sobivad kiireteks katseteks; npm-paketid või Vite sobivad päris projektideks.
  • 🚀 Kaasaegne praktika: Konksudega funktsioonikomponendid ja React 18+ createRoot API on nüüd soovitatav standard.
  • 💼 Mõju karjäärile: Reacti oskused on endiselt ühed enimnõutud esiotsa arendajate töökuulutuste hulgas kogu maailmas.

ReactJS-i õpetus algajatele: õppige samm-sammult Reacti põhitõdesid

Mis on ReactJS?

ReactJS on avatud lähtekoodiga esiots JavaSkriptiteek kasutajaliideste loomiseks. ReactJS Seda haldab Meta (endine Facebook) ja individuaalsete arendajate ning ettevõtete kogukond. Seda kasutatakse laialdaselt alusena üheleheliste rakenduste ja mobiilirakenduste loomisel. Seda on väga lihtne kasutada ja see võimaldab kasutajatel luua korduvkasutatavaid kasutajaliidese komponente.

Enne Reacti koodi esimese rea kirjutamist on kasulik teada, mis eristab teeki tavalisest teekist. JavaSkript. Järgmises osas tutvustatakse selle põhifunktsioone.

ReactJS-i omadused

JSX: JSX on laiendus JavaSkript. Kuigi JSX-i kasutamine Reactis pole kohustuslik, on see üks häid omadusi ja seda on lihtne kasutada.

KompkletisKomponendid on nagu puhtad JavaSkriptifunktsioonid, mis aitavad koodi lihtsustada, jagades loogika korduvkasutatavaks sõltumatuks koodiks. Komponente saab kasutada funktsioonidena ja komponente klassidena. Komponentidel on ka olek ja propsid, mis teeb elu lihtsaks. Klassikomponendi sees hallatakse olekut ja propse.

Virtuaalne DOM: React loob virtuaalse DOM-i, st mälusisese andmestruktuuri vahemälu. Ainult viimased muudatused värskendatakse hiljem brauseri DOM-is, mis tagab kiire renderdamise.

JavaSkripti avaldised: JS-avaldisi saab JSX-failides kasutada looksulgudes, näiteks {}.

ReactJS-i eelised

Siin on ReactJS-i kasutamise olulised plussid/eelised:

  • ReactJS kasutab virtuaalset DOM-i, mis kasutab mälusisest andmestruktuuri vahemälu ja brauseri DOM-is värskendatakse ainult viimaseid muudatusi. See muudab rakenduse kiiremaks.
  • Reacti komponentide funktsiooni abil saate luua oma valitud komponente. Komponente saab taaskasutada ja need on abiks ka koodi haldamisel.
  • ReactJS on avatud lähtekoodiga JavaSkriptiteek, seega on sellega lihtne alustada.
  • ReactJS muutus lühikese aja jooksul väga populaarseks ja annab jõudu sellistele toodetele nagu Facebook ja InstagramSeda kasutavad paljud kuulsad ettevõtted, näiteks Apple, NetflixJne
  • Meta haldab ReactJS teeki, seega on see hästi hooldatud ja ajakohane.
  • ReactJS-i saab kasutada rikkaliku kasutajaliidese arendamiseks nii töölaua- kui ka mobiilirakenduste jaoks.
  • Lihtne siluda ja testida, kuna suurem osa kodeerimisest on tehtud JavaScript mitte HTML-is.

ReactJS-i puudused

Siin on ReactJS-i kasutamise miinused/puudused:

  • Suurem osa koodist on kirjutatud JSX-is, st HTML ja CSS on osa sellest. JavaSkript. See võib olla üsna segane, kuna enamik teisi raamistikke eelistab kee'dping HTML eraldi JavaSkripti kood.
  • ReactJS-i failisuurus on suhteliselt suur.

Teades kompromisse, olete valmis Reacti seadistama. Kiireim viis seda proovida on otse CDN-ist, mida me esimesena käsitleme; npm-põhised seadistused päris projektide jaoks järgnevad.

CDN-i ReactJS-i kasutamine

Reactiga töötamise alustamiseks peame kõigepealt oma lehele lisama ReactJS-i. ReactJS-i kasutamist saate hõlpsalt CDN-iga alustada. JavaSkriptifailid, nagu allpool näidatud.

CDN-i linkide saamiseks minge pärand-Reacti dokumentatsiooni saidile, nt https://legacy.reactjs.org/docs/cdn-links.htmlja saate vajalikud failid, mida on selgitatud järgmisel pildil.

ReactJS-i kasutamine CDN-ist - Reacti dokumentatsiooni CDN-i linkide leht

Arendaja jaoks

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

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>

asendama versioon nii react.development.js kui ka react-dom.development.js jaoks soovitud Reacti versiooniga. Sellel lehel kasutame versiooni 16, seega allolevad näited töötavad muutmata kujul.

💡 Märkus: Need UMD/CDN-i järgud on pärandlähenemisviis, mis töötab kuni React 18-ni ja sobib õppimiseks endiselt hästi. React 19 ei paku enam UMD-järke ja React 18+ on asendatud... ReactDOM.render koos createRoot — vaata selle lehe lõpus olevat Reacti versioonide jaotist.

Kui plaanite CDN-faile kasutada, siis veenduge, et säilitaksite atribuudi crossorigin, et vältida domeenidevahelisi probleeme. ReactJS-koodi ei saa otse brauseris käivitada ja see tuleb Babeli abil tavaliseks tõlkida. JavaSkript enne brauseris käivitamist.

Siin on BabelJS-i skript, mida saab kasutada:

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

Siin on toimiv ReactJS-i näide, mis kasutab CDN-faile ja BabelJS-i skripti.

<!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äljund:

CDN-põhise ReactJS-i näite Hello World väljund

Järgmises peatükis süveneme koodi üksikasjadesse; vaatame siin CDN-failidega töötamist. Babeli skripti otsene kasutamine pole hea tava ja uustulnukad peaksid seda praegu kasutama ainult ReactJS-i õppimiseks. Tootmiskeskkonnas peate Reacti installima npm-paketi abil.

NPM-pakettide kasutamine

Veendu, et sul on Node.js installitud. Kui pole, siis vaata läbi see Node.js õpetus (https://www.guru99.com/node-js-tutorial.html) paigaldus.

Kui Node.js on installitud, looge kaust reageerimisprojekt/.

Projekti seadistamisega alustamiseks käivitage käsk npm inits.

Nii näeb välja kaustastruktuur:

reactproj\
package.json

Nüüd installime vajalikud paketid.

Siin on ReactJS-i pakettide loend. Me lisasime Reacti versioonile 16, nii et ReactDOM.render Sellel lehel olevad näited toimivad täpselt nii, nagu näidatud:

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

Avage käsuviip ja käivitage ülaltoodud käsud kaustas reactproj/.

Looge kaust src / kuhu kogu JS kood läheb. Kogu ReactJS projekti kood on saadaval kaustas src/. Loo fail index.js ja impordi sinna react ja react-dom, nagu allpool näidatud.

index.js

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

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

Oleme kirjutanud ReactJS-i põhikoodi. Selle üksikasju selgitame järgmises peatükis. Tahame näidata Tere, alates Guru99 õpetustja sama antakse DOM-elemendile ID-ga „root“. See võetakse failist index.html, mis on algfail, nagu allpool näidatud.

Loo kaust public/ ja lisa sinna index.html, nagu allpool näidatud.

index.html

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

Pakett react-scripts hoolitseb koodi kompileerimise ja serveri käivitamise eest HTML-faili, st index.html, kuvamiseks. Peate lisama käsu package.json faili, mis kasutab react-scripts koodi kompileerimiseks ja serveri käivitamiseks, nagu allpool näidatud:

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

Pärast kõigi pakettide installimist ja ülaltoodud käsu lisamist on lõplik package.json järgmine:

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

ReactJS-i testimise alustamiseks käivitage käsk:

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

See avab brauseri koos URL http://localhost:3000/ nagu allpool näidatud:

public/index.html

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

Brauseri väljund pärast npm-põhise Reacti projekti käivitamist

Me kasutame sama protsessi selle teostamiseks JavaSkriptifailid ka järgmistes peatükkides. Lisa kõik oma .js ja .jsx failid src/ kausta. Failistruktuur on järgmine:

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

Kuidas luua oma esimese reaktsiooni projekti seadistus

Selles ReactJS-i õpetuses on samm-sammult juhend esimese Reacti rakendusega alustamiseks.

Step 1) Importige reageerimispaketid.
1. ReactJS-iga alustamiseks peame esmalt importima reacti paketid järgmiselt.

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

2. Salvesta fail nimega index.js kausta src/.

Step 2) Kirjutage lihtne Code.
Kirjutame selles õpetuses React JS lihtsa koodi, kus kuvame sõnumi "Tere, minult Guru99 õpetust!

ReactDOM.render(

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

ReactDOM.render lisab silt elemendile, mille ID on root. Siin on HTML-fail, mis meil on:

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

Step 3) Koostage Code.

Järgmisena peame selles React.js õpetuses koodi kompileerima, et saada väljund brauseris.

Siin on kausta struktuur:

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

Lisasime failis package.json lõpliku faili koostamiseks käsud järgmiselt:

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

Lõpliku faili kompileerimiseks käivitage järgmine käsk:

npm run start

Kui käivitate ülaltoodud käsu, kompileerib see failid ja teavitab teid võimalikest vigadest. Kui kõik tundub hea, avab see brauseri ja käivitab lehe aadressil http://localhost:3000/

Käsk: npm käivitus:

C:\reactproj>npm run start

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

Step 4) Kontrollige väljundit.
. URL http://localhost:3000 avaneb brauseris pärast koodi kompileerimist, nagu allpool näidatud:

First Reacti projekti väljund brauseris

Kuidas seadistada React Vite'iga (kaasaegne lähenemine)

Ülaltoodud react-skriptide seadistus pärineb Create React Appist (CRA), mis oli aastaid standardne käivitaja. Reacti meeskond aegus ametlikult Create React Appi 2025. aasta veebruaris, seega peaksid uued projektid selle asemel kasutama moodsat ehitustööriista. Tänapäeval on kõige populaarsem valik Elab, mis käivitub kiiremini ja annab tulemuseks väiksemaid koopiaid.

Siit saate teada, kuidas Vite'iga uut Reacti projekti luua:

Step 1) Käivita terminalis tellingute käsk:

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

Step 2) Liikuge kausta ja installige sõltuvused:

cd my-react-app
npm install

Step 3) Käivitage arendusserver:

npm run dev

Vite pakub rakendust aadressil http://localhost:5173/ vaikimisi ja laadib faili salvestamisel kohe uuesti.

Peamised erinevused sellel lehel olevast vanemast seadistusest:

  • Sissekandefail on src/main.jsx src/index.js asemel.
  • See installib uusima Reacti, mis kasutab createRoot ReactDOM.renderi asemel.
  • index.html asub projekti juurkataloogis, mitte kaustas public/.
  • Ehitised on toodetud koos npm run build dist/ kausta.

Täispaketi vajaduste jaoks, nagu marsruutimine ja serveri renderdamine, soovitab Reacti meeskond ka selliseid raamistikke nagu Järgmine.jsKõik allolevates peatükkides õpitu – JSX, komponendid, olek ja rekvisiidid – rakendub muutmata kujul Vite'i või Next.js-i projektis.

Mis on JSX?

JSX on laiendus JavaSkript. See on malliskript, kus saate kasutada HTML-i ja JavaSkript koos.

Siin on lihtne näide JSX-koodist.

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

Miks me vajame Reactis JSX-i?

Kasutajaliidese jaoks vajame HTML-i ja igal DOM-i elemendil on sündmused, mida tuleb käsitleda, oleku muutused jne.

Reacti puhul võimaldab see meil kasutada HTML-i ja JavaSkript samas failis ja hoolitse DOM-i oleku muutuste eest tõhusalt.

Avaldised JSX-is

Siin on lihtne näide avaldiste kasutamisest JSX-is.

Varasemates ReactJS-i näidetes kirjutasime midagi sellist:

index.js

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

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

Nüüd muudame ülaltoodud koodi, et lisada avaldisi. Avaldisi kasutatakse looksulgudes {} ja neid laiendatakse käitusaja jooksul. Reacti avaldised on samad, mis JavaSkripti avaldised.

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

Proovime nüüd sama brauseris.

JSX-i avaldised - asendamata avaldise väljund brauseris

Ülaltoodud ekraanipildil on näha, et avaldist {display} ei asendata. React ei tea, mida teha, kui avaldist kasutatakse .js-failis.

Lisame nüüd muudatused ja loome jsx-faili, nagu allpool näidatud:

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;

Oleme lisanud vajaliku koodi ja kasutame index.js-is faili test.jsx. Me tahame, et h1tag muutuja, mida kasutatakse failis index.js, seega eksporditakse sama, nagu eespool näidatud failis test.jsx.

Siin on muudetud kood failis index.js:

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

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

test.jsx kasutamiseks index.js-is peame selle kõigepealt importima, nagu allpool näidatud:

import h1tag from './test.jsx';

Saame nüüd kasutada h1tagit ReactDOM.renderis, nagu allpool näidatud:

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

Siin on väljund, kui kontrollime sama brauseris:

JSX-avaldis kuvatakse brauseris õigesti

Mis on ReactJS-i komponendid?

Komponendid on nagu puhtad JavaSkriptifunktsioonid, mis aitavad koodi lihtsamaks muuta, jagades loogika korduvkasutatavateks sõltumatuteks koodideks.

Komponendid kui funktsioonid

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;

Oleme loonud funktsiooni nimega Tere mis tagastab h1 sildi, nagu eespool näidatud. Funktsiooni nimi toimib elemendina, nagu allpool näidatud:

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

Komponent Tere kasutatakse HTML-sildina, st , määratud Tere_komp muutuja ja sama eksporditakse ekspordi abil.

Kasutame nüüd seda komponenti failis index.js, nagu allpool näidatud:

index.js

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

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

Siin on väljund brauseris:

Funktsioonikomponendi väljund ReactJS-is

Klassige komponendina

Siin on ReactJS-i näide, mis kasutab komponendina klassi.

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;

Me saame failis index.js olevat komponenti Hello kasutada järgmiselt:

index.js

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

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

Komponenti Hello kasutatakse HTML-sildina, st .

Siin on sama väljund.

Klass komponendina brauseris väljundina

Klassikomponendid vs funktsioonikomponendid ja konksud

Nüüd olete näinud mõlemat komponendi kirjutamise viisi, seega millist peaksite kasutama? See leht õpetab klassikomponente, kuna need muudavad oleku ja elutsükli kontseptsioonid selgesõnaliseks, mis on algajatele väärtuslik ja esineb endiselt vanemates koodibaasides. Kuna React 16.8 tutvustas aga konksusid, saavad ka funktsioonikomponendid olekut hoida ja need on soovitatav stiil kogu uue koodi jaoks.

Aspekt Klassi komponent Funktsioonikomponent konksudega
riik this.state ja this.setState() useState() konks
Elutsükkel komponentDidMount, komponentDidUpdate, komponentWillUnmount useEffect() Konks katab kõik kolm
Süntaks Rohkem malli (konstruktor, sidumine, see) Lühem, seda märksõna pole
olek Toetatud, pärandstiil Soovitatav uue koodi jaoks

Siin on sellelt lehelt pärit oleku näide, mis on ümber kirjutatud useState konksu abil:

import React, { useState } from 'react';

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

Mõlemad versioonid renderdavad sama väljundit. Õpi selgeks allolevates peatükkides kasutatud klassi süntaks ja harjuta seejärel iga näite teisendamist konksudeks.

Mis on olek ReactJS-is?

Riik on JavaSkriptiobjekt, sarnane propsidega, mis sisaldab ReactJS-i renderdamiseks vajalikke andmeid. Olekuandmed on privaatne objekt ja neid kasutatakse klassi komponentide sees.

Osariigi näide

Siin on toimiv näide oleku kasutamisest klassis.

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

Seda saame brauseris testides:

ReactJS-i väljundi olek, mis näitab oleku sõnumit

Mis on ReactJS-i rekvisiidid?

Rekvisiidid (props) on komponendi sees kasutatavad omadused. Need toimivad globaalsete objektide või muutujatena, mida saab komponendi sees kasutada.

Funktsioonikomponendi rekvisiidid

Siin on näide rekvisiitide edastamisest funktsioonikomponendile.

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;

Nagu eespool näidatud, oleme lisanud msg omistada komponent. Samale pääseb ligi ka rekvisiidid funktsiooni Hello sees, mis on objekt, millel on msg atribuudi üksikasjad ja sama kasutatakse väljendina.

Seda komponenti kasutatakse failis index.js järgmiselt:

index.js

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

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

Siin on väljund brauseris:

Funktsioonikomponendi väljundi rekvisiidid brauseris

Rekvisiidid klassi komponendile

Klassi rekvisiitidele ligipääsemiseks saame seda teha järgmiselt:

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 atribuut edastatakse faili index.js komponendile järgmiselt:

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

See on brauseri väljund:

Klassikomponendi väljundi rekvisiidid brauseris

Kontrollige ka: - AngularJS-i õpetus algajatele: õppige AngularJS-i samm-sammult

Komponendi elutsükkel

Kui komponendid, olek ja propsid on käsitletud, on järgmine samm mõista, millal React teie komponendi meetodeid kutsub. Komponendi elutsükkel jaguneb initsialiseerimise, ühendamise, värskendamise ja lahtiühendamise etappideks.

Siin on iga etapi üksikasjalik selgitus.

ReactJS-i komponendil on järgmised etapid:

Vormindamine: see on komponendi elutsükli esimene etapp.

Siin on sellel vaikerekvisiidid ja olek algtasemel.

PaigaldamineSelles etapis renderdatakse komponent DOM-i sees. Paigaldusolekus on meil ligipääs järgmistele meetoditele:

  • render(): See meetod on olemas kõigi loodud komponentide jaoks. See tagastab HTML-sõlme.
  • componentDidMount(): Seda kutsutakse kohe pärast komponendi lisamist DOM-i.

VärskendusedSelles olekus suhtleb kasutaja DOM-iga ja seda värskendatakse. Näiteks kui sisestate midagi tekstikasti, värskendatakse oleku omadusi.

Värskendusolekus on saadaval järgmised meetodid:

  • shouldComponentUpdate(): kutsutakse välja enne uuesti renderdamist; see võimaldab teil otsustada, kas komponenti tuleks uuendada. Väärtuse "true" tagastamine renderdab komponendi uuesti.
  • componentDidUpdate(): kutsutakse välja pärast komponendi uuendamist.

Lahtimonteerimine: See olek tuleb pildile siis, kui komponenti pole vaja või see eemaldatakse.

Järgnev on meetod, mis on saadaval lahtiühendatud olekus:

  • componentWillUnmount(): kutsutakse välja vahetult enne komponendi eemaldamist või hävitamist.

Elutsükli meetodite töönäide

Siin on toimiv näide, mis näitab igal etapil kutsutavaid meetodeid.

Näide: 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')
);

Kui kontrollite brauseris väljundit:

Brauseris kuvatud elutsükli näide

Brauseri konsoolis kuvatakse järgmine teave:

Brauseri konsooli väljund, mis kuvab componentDidMount sõnumit

Kui kasutaja sisestab tekstikasti:

Tekstikasti sisend komponendi oleku värskendamiseks

Konsoolis kuvatakse järgmised teated:

Konsooli väljund, mis näitab värskenduse elutsükli meetodite käivitamist

Nüüd, kui teate, millal komponent renderdatakse ja uueneb, rakendame olekut ja sündmusi praktilisel kasutusjuhul: kasutaja sisendi käsitlemine vormide kaudu.

Töötamine vormidega

ReactJS-is HTML-i sisendelemendid, näiteks , ja <select /> omavad oma olekut ning neid tuleb kasutaja interaktsiooni korral värskendada, kasutades meetodit setState().

Selles peatükis vaatame, kuidas ReactJS-is vormidega töötada.

Siin on toimiv näide:

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;

Sisendväljade puhul peame säilitama olekut, seega pakub React selleks spetsiaalset meetodit nimega setState, mis aitab olekut muutuste korral säilitada. Reaalses rakenduses kutsutakse ka event.preventDefault() formSubmit sees, et takistada brauseril lehe uuesti laadimist esitamisel.

Oleme tekstikasti ja submit-nupu peal kasutanud sündmusi onChange ja onClick. Kui kasutaja tekstikasti trükib, kutsutakse sündmus onChange ja olekuobjekti nimeväli uuendatakse, nagu allpool näidatud:

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äljund brauseris on järgmine:

Vormidega töötamine – vormi esialgne väljund

Step 1) Sisesta oma nimi tekstikasti:

Vormidega töötamine – tekstikasti sisestatud nimi

Step 2) Klõpsake nuppu Esita:

Vormidega töötamine – pärast esitamist kuvatakse teade

ReactJS-i sündmustega töötamine

Vormid on ainult üks kasutaja interaktsiooni allikas. Sündmustega töötamine ReactJS-is on sama, mis see oleks tehtud ka teises versioonis. JavaSkript. Saate kasutada kõiki sündmusekäitlejaid, mida kasutatakse JavaSkript. Meetodit setState() kasutatakse oleku värskendamiseks, kui kasutaja suhtleb mis tahes HTML-elemendiga.

Siin on toimiv näide sündmuste kasutamisest ReactJS-is.

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;

Sisendväljade puhul peame säilitama oleku, seega pakub React selleks setState meetod, mis aitab säilitada olekut alati, kui toimub muutus.

Oleme üritusi kasutanud me muutume ja onClick tekstikasti ja nupu peal. Kui kasutaja tekstikasti trükib, siis me muutume Sündmust kutsutakse ja olekuobjekti nimevälja uuendatakse, nagu allpool näidatud:

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

Siin on väljund brauseris:

Sündmustega töötamine - esialgne väljund brauseris

Kui kasutaja sisestab nime:

Sündmustega töötamine – nimi kuvatakse kasutajatüüpidena

Kui kasutaja klõpsab nuppu Click Here:

Sündmustega töötamine – nupu klõpsamisel kuvatakse teade

Inline CSS-iga töötamine ReactJS-is

Kui komponendid on andmeid ja sündmusi käsitlenud, on viimane samm nende kujundamine. Vaatame toimivat näidet, et mõista ReactJS-i tekstisisest CSS-i.

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;

Lisasin h1 sildile värvi stiilis 'punane'.

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äljund brauseris on järgmine:

Töötamine tekstisisese CSS-iga - punase pealkirja väljund

Saate luua objekti soovitud stiiliga elemendile ja kasutada stiili lisamiseks avaldist, nagu ülaltoodud näites näidatud.

Välise CSS-iga töötamine ReactJS-is

Loome välise CSS-faili. Selleks loo kaust css/ ja lisa sinna style.css.

style.css

.h1tag {
color:red;
}

Lisage style.css oma index.html faili

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

Nüüd lisame klassi .jsx-faili h1-sildile.

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

Atribuudile className antakse klassi üksikasjad. Pange tähele, et JSX kasutab klassiNimi HTML-i atribuudi class asemel, kuna class on reserveeritud märksõna JavaSkript. Nüüd testime seda brauseris.

Välise CSS-stiilis pealkirjaväljundiga töötamine

Seda näete brauseris h1-sildi kontrollimisel:

Töö välise CSS-iga - kontrollitud h1-silt näitab klassi

Näete, et class="h1tag" on edukalt h1 sildile lisatud.

Miks asendati ReactDOM.render fail createRoot'iga?

Kõik sellel lehel olevad näited ühendavad rakenduse ReactDOM.renderiga, mis on õige React 16 ja 17 versioonide puhul, millele see kursus on suunatud. 2022. aasta märtsis välja antud React 18 asendas selle sisenemispunkti createRoot API-ga ja React 19 eemaldas ReactDOM.renderi täielikult. Põhjus on samaaegsus: createRoot võimaldab Reactil korraga ette valmistada mitu kasutajaliidese versiooni, katkestada madala prioriteediga renderdamise ja hoida tüüpilisi liideseid.ping ja animatsioonid sujuvad. Sellised funktsioonid nagu automaatne pakkimine, useTransition ja põnevuspõhine voogesitus sõltuvad kõik sellest.

Sellel lehel kasutatud index.js tänapäevane vaste näeb välja selline:

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

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

Kõik muu, mida siin õppisite – komponendid, JSX, olek, propsid ja sündmused – toimib pärast seda üherealist muudatust sisenemispunktis samamoodi. Sellised versioonierinevused esinevad sageli React JS intervjuuküsimused, seega tasub mõlemat API-t mõista.

KKK

ReactJS on teek, mitte täielik raamistik. See keskendub ainult kasutajaliidese loomisele. Marsruutimiseks, andmete toomiseks ja serveri renderdamiseks ühendavad arendajad selle selliste tööriistadega nagu React Router või raamistikega nagu Järgmine.js.

Tahke JavaSkripti põhitõed – enamik õppijaid omandab komponendid, JSX-i, oleku ja propsid kahe kuni nelja nädala jooksul regulaarse harjutamisega. Tööks valmis olemine, sealhulgas konksud, marsruutimine ja API-kõned, võtab tavaliselt väikeste projektide ehitamist kaks kuni kolm kuud.

ReactJS renderdab veebilehtede loomiseks brauseri DOM-i, samas kui React Native kasutab sama komponentide mudelit natiivse iOS-i loomiseks ja Android rakendused. Oskused kanduvad kahe vahel üle, kuid React Native asendab HTML-sildid natiivsete kasutajaliidese komponentidega.

Jah. Assistendid, näiteks GitHubi koopia ja ChatGPT oskab komponente struktureerida, vigu selgitada ja klassikomponente konksudeks teisendada. Kontrolli alati genereeritud koodi, kuna tehisintellekt võib soovitada aegunud API-sid, näiteks ReactDOM.render.

Lähiajal ebatõenäoline. Tehisintellekt kiirendab rutiinset kodeerimist, kuid arendajaid on endiselt vaja komponentide arhitektuuri kujundamiseks, rakenduse oleku haldamiseks, ligipääsetavuse ülevaatamiseks ja tootmisprobleemide silumiseks. Reacti ja tehisintellekti abil töövoogude õppimine muudab teid väärtuslikumaks, mitte vähem väärtuslikuks.

Kontrollige ka: - 70 kõige populaarsemat reageerimisintervjuu küsimust ja vastust (värskendatud)

Võta see postitus kokku järgmiselt: