ReactJS vodič za početnike: učite uz primjer korak po korak

Što je ReactJS?

ReactJS je otvoreno sučelje JavaBiblioteka skripti za izgradnju korisničkih sučelja. ReactJS održavaju Facebook i zajednica pojedinačnih programera i tvrtki. Naširoko se koristi kao baza za izradu jednostraničkih web stranica i mobilnih aplikacija. Vrlo je jednostavan za korištenje i omogućuje korisnicima stvaranje komponenti korisničkog sučelja za višekratnu upotrebu.

Značajke ReactJS-a

JSX: JSX je proširenje za javascript. Iako nije obavezno koristiti JSX u Reactu, to je jedna od dobrih značajki i jednostavan je za korištenje.

Komponente: Komponente su poput čistih javascript funkcija koje olakšavaju izradu koda dijeljenjem logike u nezavisni kod koji se može ponovno koristiti. Komponente možemo koristiti kao funkcije, a komponente kao klase. Komponente također imaju stanje, rekvizite koji olakšavaju život. Unutar klase održava se stanje svakog od rekvizita.

Virtualni DOM: React stvara virtualni dom, tj. predmemoriju strukture podataka u memoriji. Samo konačne promjene DOM-a kasnije su ažurirane u DOM-u preglednika.

Javascript Izrazi: JS izrazi mogu se koristiti u jsx datotekama pomoću vitičastih zagrada, na primjer {}.

Prednosti ReactJS-a

Evo važnih prednosti/prednosti korištenja ReactJS-a:

  • ReactJS koristi virtualni dom koji koristi predmemoriju strukture podataka u memoriji, a samo se konačne promjene ažuriraju u dom preglednika. Time aplikacija postaje brža.
  • Možete izraditi komponente po svom izboru korištenjem značajke komponente react. Komponente se mogu ponovno koristiti, a također mogu biti korisne u održavanju koda.
  • Reactjs je javascript biblioteka otvorenog koda, tako da je lako započeti s njom.
  • ReactJS je u kratkom vremenu postao vrlo popularan i održavaju ga Facebook i Instagram. Koriste ga mnoge poznate tvrtke poput Applea, Netflix, Itd
  • Facebook održava ReactJS, biblioteku, tako da se dobro održava i ažurira.
  • ReactJS se može koristiti za razvoj bogatog korisničkog sučelja za desktop i mobilne aplikacije.
  • Jednostavan za otklanjanje pogrešaka i testiranje jer se većina kodiranja obavlja u njemu Javascript nego na Html.

Nedostaci ReactJS-a

Ovdje su mane/mane korištenja ReactJS-a:

  • Većina koda napisana je u JSX-u, tj. Html i css dio su javascripta, što može biti prilično zbunjujuće jer većina drugih okvira preferira držati Html odvojenim od javascript koda.
  • Veličina datoteke ReactJS je velika.

Korištenje ReactJS-a iz CDN-a

Da bismo počeli raditi s reactom, prvo moramo instalirati reactjs. Lako možete početi koristiti reactjs koristeći CDN javascript datoteke, kao što je prikazano u nastavku.

Idite na službenu stranicu reactj-a da biste dobili CDN poveznice, tj. https://reactjs.org/docs/cdn-links.html i dobit ćete potrebne datoteke za objašnjenje sljedeće slike.

Korištenje ReactJS-a iz CDN-a

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

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

zamijeniti verzija s najnovijom react verzijom za react-development.js i react-dom.developement.js. Datoteke možete ugostiti na svojoj strani kako biste počeli raditi s reactj-om.

U slučaju da planirate koristiti CDN datoteke, svakako zadržite atribut cross-origin kako biste izbjegli probleme s cross-domain. Reactjs kod ne može se izvršiti izravno u pregledniku i potrebno ga je prenijeti pomoću Babela u javascript prije izvršenja u pregledniku.

Ovdje je BabelJS skripta koja se može koristiti:

<script src="https://unpkg.com/[email protected]/babel.min.js"></script>

Ovdje je radni primjer ReactJS koji koristi cdn datoteke i babeljs skriptu.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>   
    <script src="https://unpkg.com/[email protected]/babel.min.js"></script>
  </head>
  <body> 
    <div id="app"></div>
    <script type="text/babel">
      ReactDOM.render(
        <h1>Hello, from Guru99 Tutorials!</h1>,
        document.getElementById('app')
      );
   </script>   
  </body>
</html>

Izlaz:

Za proizvodni izlaz

Ući ćemo u detalje koda u sljedećem poglavlju, da vidimo kako se ovdje radi s CDN datotekama. Rečeno je da izravno korištenje babel skripte nije dobra praksa, a novopridošlice je za sada mogu koristiti samo za učenje reactjs-a. U produkciji ćete morati instalirati react pomoću npm paketa.

Korištenje NPM paketa

Provjerite imate li instaliran nodejs. Ako nije instaliran, prođite kroz ovaj vodič za nodejs (https://www.guru99.com/node-js-tutorial.html) instalacija.

Nakon što instalirate nodejs, stvorite mapu reactproj/.

Za početak postavljanja projekta pokrenite naredbu npm init.

Ovako će izgledati struktura mape:

reactproj\
package.json   

Sada ćemo instalirati pakete koji su nam potrebni.

Evo popisa paketa za reactjs:

npm install react --save-dev
npm install react-dom --save-dev
npm install react-scripts --save-dev

Otvorite naredbeni redak i pokrenite gornje naredbe unutar mape reactproj/.

Napravite mapu src / gdje će sav js kod doći u tu mapu. Sav kod za reactjs projekt bit će dostupan u mapi src/. Napravite datoteku index.js i dodajte import react i react-dom, kao što je prikazano u nastavku.

index.js

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

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

Vratili smo osnovni kod za reactjs. Detalje o tome objasnit ćemo u sljedećem poglavlju. Želimo prikazati Pozdrav iz Guru99 Tutorials a isto se daje elementu dom s id-om "root". Preuzeto je iz datoteke index.html, koja je početna datoteka, kao što je prikazano u nastavku.

Napravite mapu public/ i dodajte index.html u nju kao što je prikazano u nastavku

index.html

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

Paket react-skripti će se pobrinuti za kompajliranje koda i pokretanje poslužitelja za prikaz html datoteke tj. index.html. Morate dodati naredbu u package.json koja će se pobrinuti za korištenje react-skripti za kompajliranje koda i pokretanje poslužitelja kao što je prikazano u nastavku:

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

Nakon instaliranja svih paketa i dodavanja gornje naredbe, konačni package.json je sljedeći:

Package.json

{
  "name": "reactproj",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "react-scripts start"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "react": "^16.9.0",
    "react-dom": "^16.9.0",
    "react-scripts": "^3.1.1"
  }
}

Za početak testiranja reactj pokrenite naredbu

npm run start
C:\reactproj>npm run start		
> [email protected] start C:\reactproj		
> react-scripts start	

Otvorit će preglednik s url-om http://localhost:3000/ kao što je prikazano u nastavku:

javno/index.html

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

Korištenje NPM paketa

Također ćemo koristiti isti postupak za izvršavanje javascript datoteka u sljedećim poglavljima. Dodajte sve svoje js i .jsx datoteke u mapu src/. Struktura datoteke bit će sljedeća:

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

Kako napraviti svoju prvu postavku React projekta

Evo vodiča korak po korak u ovom ReactJS vodiču za početak prve react aplikacije.

Korak 1) Uvezite react pakete.
1. Da bismo započeli s ReactJS-om, prvo moramo uvesti react pakete kako slijedi.

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

2. Spremite datoteku kao index.js u mapu src/

Korak 2) Napišite jednostavan kod.
Napisat ćemo jednostavan kod u ovom tutorialu React JS, u kojem ćemo prikazati poruku "Pozdrav iz Guru99 Tutorials!"

ReactDOM.render(

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

ReactDOM.render će dodati oznaku elementu s id root-om. Ovo je html datoteka koju imamo:

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

Korak 3) Sastavite kod.

Zatim u ovom vodiču za React.js moramo kompajlirati kod da bismo dobili izlaz u pregledniku.

Ovo je struktura mape:

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

Dodali smo naredbe za kompajliranje konačne datoteke u package.json kako slijedi:

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

Za prevođenje konačne datoteke pokrenite sljedeću naredbu:

npm run start

Kada pokrenete gornju naredbu, ona će kompajlirati datoteke i obavijestiti vas ako dođe do pogreške, ako sve izgleda dobro, otvorit će preglednik i pokrenuti datoteku index.html na http://localhost:3000/index.html

Naredba: npm run start:

C:\reactproj>npm run start

> [email protected] start C:\reactproj
> react-scripts start

Korak 4) Provjerite izlaz.
URL http://localhost:3000 otvorit će se u pregledniku nakon što se kôd kompajlira kao što je prikazano u nastavku:

Rezultat projekta First React

Što je JSX?

JSX je proširenje za javascript. To je skripta predloška u kojoj ćete imati moć korištenja HTML-a i Javascript zajedno.

Evo jednostavnog primjera JSX koda.

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

Zašto nam treba JSX u Reactu?

Za korisničko sučelje potreban nam je Html, a svaki element u domu imat će događaje kojima se treba rukovati, promjene stanja itd.

U slučaju Reacta, to nam omogućuje da koristimo Html i javascript u istoj datoteci i brinemo o promjenama stanja u domu na učinkovit način.

Izrazi u JSX

Evo jednostavnog primjera kako koristiti izraze u JSX-u.

U ranijim ReactJS primjerima napisali smo nešto poput:

index.js

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

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

Sada ćemo promijeniti gornji kod da bismo dodali izraze. Izrazi se koriste unutar vitičastih zagrada {} i proširuju se tijekom vremena izvođenja. Izrazi u Reactu isti su kao javascript izrazi.

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

Testirajmo sada isto u pregledniku.

Izrazi u JSX izlazu

Možete vidjeti da izraz {display} nije zamijenjen. React ne zna što učiniti kada se izraz koristi unutar .js datoteke.

Dodajmo sada promjene i stvorimo .jsx datoteku, kao što je prikazano u nastavku:

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;

Dodali smo potrebni kod i koristit ćemo datoteku text.jsx u index.js. Želimo h1tag varijabla koja će se koristiti unutar script.js, tako da se ista izvozi kao što je prikazano gore u test.jsx

Ovdje je modificirani kod u index.js

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

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


Da bismo koristili test.jsx u index.js, prvo ga moramo uvesti kao što je prikazano u nastavku:

import h1tag from './test.jsx';

Sada možemo koristiti h1tag u ReactDOM.renderu kao što je prikazano u nastavku:

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

Evo rezultata kada isto provjerimo u pregledniku:

Izlaz

Što su komponente u ReactJS?

Komponente su poput čistih javascript funkcija koje olakšavaju izradu koda dijeljenjem logike u neovisan kod koji se može ponovno koristiti.

Komponente kao funkcije

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;


Napravili smo funkciju tzv Bok koja je vratila oznaku h1 kao što je prikazano gore. Naziv funkcije djeluje kao element, kao što je prikazano u nastavku:

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

Komponenta Bok koristi se kao Html oznaka, tj. i dodijeljen Pozdrav_comp varijablu i isti se eksportira korištenjem exporta.

Iskoristimo sada ovu komponentu u datoteci index.js kao što je prikazano u nastavku:

index.js

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

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

Evo izlaza u pregledniku:

Izlaz komponenti u ReactJS

Klasa kao komponenta

Ovdje je primjer ReactJS koji koristi klasu kao 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 možemo koristiti u datoteci index.js na sljedeći način:

index.js

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

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

Komponenta Hello koristi se kao Html oznaka, tj. .

Ovdje je rezultat istog.

Klasa kao komponentni izlaz

Što je stanje u ReactJS?

Stanje je javascript objekt sličan propsima koji imaju podatke koji se koriste s reactjs renderom. Podaci o stanju privatni su objekt i koriste se unutar komponenti unutar klase.

Primjer države

Ovdje je radni primjer kako koristiti stanje unutar klase.

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

Ovo dobivamo kada ga testiramo u pregledniku:

Stanje u ReactJS izlazu

Što su Props u ReactJS?

Rekviziti su svojstva koja se koriste unutar komponente. Djeluju kao globalni objekt ili varijable koje se mogu koristiti unutar komponente.

Props to Function Component

Ovdje je primjer prosljeđivanja rekvizita funkcijskoj komponenti.

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;

Kao što je gore prikazano, dodali smo msg pripisati komponenta. Istom se može pristupiti kao rekviziti unutar funkcije Hello, koja je objekt koji će imati msg detalje atributa, a isti se koristi kao izraz.

Komponenta se koristi u index.js na sljedeći način:

index.js

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

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

Evo izlaza u pregledniku:

Rekviziti za funkcionalni izlaz komponente

Rekviziti za komponentu klase

Za pristup rekvizitima u klasi možemo to učiniti na sljedeći način:

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;

The msg atribut se prosljeđuje komponenti u index.js na sljedeći način:

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

Ovo je izlaz u pregledniku:

Rekviziti za izlaz komponente klase

Također provjerite: - AngularJS vodič za početnike: Naučite AngularJS korak po korak

Životni ciklus komponente

Životni ciklus komponente podijeljen je u faze inicijalizacije, montaže, ažuriranja i demontaže.

Ovdje je detaljno objašnjenje svake komponente.

Komponenta u reactjs ima sljedeće faze:

Inicijalizacija: Ovo je prva faza životnog ciklusa komponente.

Ovdje će imati zadane rekvizite i stanje na početnoj razini.

Montiranje: U ovoj fazi, komponenta se prikazuje unutar dom. Izloženi smo sljedećim metodama u stanju montaže.

  • componentDidMount(): Ovo se također poziva kada je komponenta upravo dodana u dom.
  • render(): imate ovu metodu za sve stvorene komponente. Vraća Html čvor.

Nadopune: U ovom stanju korisnik komunicira s domom i ažurira se. Na primjer, unesete nešto u tekstni okvir, pa se svojstva stanja ažuriraju.

Sljedeće su metode dostupne u stanju ažuriranja:

  • shouldComponentUpdate() : poziva se kada se komponenta ažurira.
  • componentDidUpdate() : nakon ažuriranja komponente.

Demontaža: ovo stanje se pojavljuje kada komponenta nije potrebna ili uklonjena.

Sljedeće su metode dostupne u stanju demontaže:

Component willUnmount(): poziva se kada se komponenta ukloni ili uništi.

Radni primjer

Ovdje je radni primjer koji pokazuje metode pozvane u svakom stanju.

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

Kada provjerite izlaz u pregledniku

Izlaz

U konzoli preglednika dobivate:

Izlaz konzole preglednika

Kada korisnik unese u tekstni okvir:

Izlaz korisničkih vrijednosti

U konzoli se prikazuju sljedeće poruke:

Izlaz konzole

Rad s obrascima

U reactjs Html ulazni elementi poput , i <select /> ima vlastito stanje i potrebno ga je ažurirati kada korisnik stupi u interakciju pomoću metode setState().

U ovom poglavlju ćemo vidjeti kako raditi s obrascima u reactjs-u.

Evo primjera rada:

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

Za polja za unos, moramo održavati stanje, tako da za tu reakciju postoji posebna metoda tzv setState, koji pomaže održati stanje kad god dođe do promjene.

Koristili smo događaje onChange i onClick na okvir za tekst i gumb za slanje. Kada korisnik uđe u tekstni okvir, poziva se događaj onChange, a polje imena unutar stanja objekta stanja ažurira se kao što je prikazano u nastavku:

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

Ispis u pregledniku je sljedeći:

Rad s izlaznim obrascima

Korak 1) Unesite svoje ime u tekstni okvir:

Rad s izlaznim obrascima

  1. Kliknite gumb za slanje

Rad s izlaznim obrascima

Rad s događajima u ReactJS

Rad s događajima u reactjs-u isti je kao što biste radili u javascriptu. Možete koristiti sve rukovatelje događajima koji se koriste u javascriptu. Metoda setState() koristi se za ažuriranje stanja kada korisnik komunicira s bilo kojim Html elementom.

Ovdje je radni primjer kako koristiti događaje u reactjs.

događaji.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;

Za polja za unos, moramo održavati stanje, tako da za tu reakciju postoji posebna metoda tzv setState, koji pomaže održati stanje kad god dođe do promjene.

Iskoristili smo događaje mijenjamo se i na klik na okvir za tekst i gumb. Kada korisnik unese unutar tekstualnog okvira mijenjamo se poziva se događaj, a polje naziva unutar stanja objekta stanja ažurira se kao što je prikazano u nastavku:

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

Evo izlaza u pregledniku:

Rad s izlazom događaja

Kada korisnik unese ime:

Rad s izlazom događaja

Kada korisnik klikne na gumb Kliknite ovdje:

Rad s izlazom događaja

Rad s Inline CSS-om u ReactJS-u

Pogledat ćemo radni primjer kako bismo razumjeli rad ugrađenog css-a u reactjs-u.

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;

Dodao sam boju: 'crveni' stil oznaci 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')
);

Ispis u pregledniku je sljedeći:

Rad s Inline CSS izlazom

Možete stvoriti objekt stila koji želite na elementu i koristiti izraz za dodavanje stila, kao što je prikazano u gornjem primjeru.

Rad s vanjskim CSS-om u ReactJS-u

Kreirajmo vanjski css, za to stvorimo mapu css/ i dodamo style.css u nju.

style.css

.h1tag {
color:red;
}

Dodajte style.css svojoj datoteci 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>
    <script src = "out/script.min.js"></script>
  </body>
</html>

Dodajmo sada klasu u oznaku h1 u .jsx datoteci

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

Atributu className dati su detalji klase. Testirajmo sada u pregledniku.

Rad s vanjskim CSS izlazom

Ovo je ono što vidite kada pregledate oznaku h1 u pregledniku:

Rad s vanjskim CSS izlazom

Možete vidjeti da je class=”h1tag” uspješno dodan u h1 tag.

rezime

  • ReactJS je front-end otvorenog koda JavaBiblioteka skripti za izradu korisničkog sučelja. Održava ga Facebook i danas ga koriste mnoge tvrtke za razvoj korisničkog sučelja.
  • Osnovne značajke ReactJS-a uključuju JSX, komponente (funkcionalne komponente i komponente temeljene na klasi), životni ciklus komponente, rekvizite i podršku stanja za komponentu, rad s javascript izrazima.
  • Postavljanje projekta ReactJS objašnjeno je korištenjem CDN datoteka i korištenjem npm paketa za izradu projekta.
  • JSX je proširenje za javascript. To je skripta predloška u kojoj ćete imati moć korištenja Html-a i JavaScripta zajedno.
  • Komponente su poput čistih javascript funkcija koje olakšavaju izradu koda dijeljenjem logike u neovisan kod koji se može ponovno koristiti.
  • Stanje je javascript objekt sličan propsima koji imaju podatke koji se koriste s reactjs renderom. Podaci o stanju privatni su objekt i koriste se unutar komponenti unutar klase.
  • Rekviziti su svojstva koja se koriste unutar komponente.
  • Životni ciklus komponente podijeljen je u faze inicijalizacije, montaže, ažuriranja i demontaže.
  • U reactjs html ulazni elementi poput , i <select /> ima vlastito stanje i potrebno ga je ažurirati kada korisnik stupi u interakciju pomoću metode setState().
  • Rad s događajima u reactjs-u isti je kao što biste radili u javascriptu. Možete koristiti sve rukovatelje događajima koji se koriste u javascriptu. Metoda setState() koristi se za ažuriranje stanja kada korisnik komunicira s bilo kojim Html elementom.
  • ReactJS vam omogućuje rad s vanjskim css-om kao i s ugrađenim css-om pomoću javascript izraza.

Također provjerite: - Top 70 React pitanja i odgovora za intervju (ažurirano)