React (web framework)

React (noto anche come React.js o ReactJS) è un web framework open-source, front-end, JavaScript per la creazione di interfacce utente. È mantenuto da Meta (già Facebook) e da una comunità di singoli sviluppatori e aziende.

React (noto anche come React.js o ReactJS) è un web framework open-source, front-end, JavaScript per la creazione di interfacce utente. È mantenuto da Meta (già Facebook) e da una comunità di singoli sviluppatori e aziende.

React può essere utilizzato come base nello sviluppo di applicazioni a pagina singola ma è utilizzabile anche su mobile tramite React Native, una libreria sempre sviluppata da Meta che tramuta i componenti React in componenti nativi (iOS e Android). Tuttavia, React si occupa solo del rendering dei dati sul DOM, pertanto la creazione di applicazioni React richiede generalmente l'uso di librerie aggiuntive per lo state management e il routing. Redux e React Router sono i rispettivi esempi di tali librerie. A questo fine è possibile utilizzare anche dei framework terzi, come ad esempio Next.js.

Utilizzo di base

Di seguito è riportato un esempio rudimentale di utilizzo di React in HTML con JSX e JavaScript.

in base al documento HTML di seguito.

La funzione Saluto è un componente React che mostra il famoso "Hello, world" introduttivo.

Componenti

Il codice di React è costituito da entità denominate componenti. I componenti possono essere sottoposti a rendering su un particolare elemento nel DOM usando la libreria React DOM. Quando si esegue il rendering di un componente, si possono passare valori noti come "props":

I due modi principali per dichiarare i componenti in React sono tramite componenti funzionali e componenti basati su classi.

Componenti funzionali

I componenti funzionali vengono dichiarati con una funzione che quindi restituisce alcuni JSX.

Componenti basati su classi

I componenti basati su classi vengono dichiarati utilizzando le classi ES6. Sono anche noti come componenti "stateful", perché il loro stato può contenere valori in tutto il componente e può essere passato ai componenti figlio tramite props:

DOM virtuale

Un'altra caratteristica notevole è l'uso di un Document Object Model (DOM) virtuale. React crea una cache della struttura dati in-memory, calcola le differenze risultanti e quindi aggiorna in modo efficiente il DOM visualizzato dal browser. Ciò consente al programmatore di scrivere codice come se l'intera pagina fosse renderizzata su ogni modifica, mentre le librerie React eseguono il rendering solo dei sottocomponenti che cambiano effettivamente.

Metodi del ciclo di vita

I metodi del ciclo di vita sono hook che consentono l'esecuzione di codice in punti prestabiliti durante la vita di un componente.

shouldComponentUpdate consente allo sviluppatore di impedire il rendering non necessario di un componente restituendo false se non è richiesto un rendering.

componentDidMount viene chiamato una volta che il componente è "montato" (il componente è stato creato nell'interfaccia utente, spesso associandolo a un nodo DOM). Questo è comunemente usato per attivare il caricamento dei dati da una fonte remota tramite un'API.

componentWillUnmount viene chiamato immediatamente prima che il componente venga demolito o "smontato". Questo è comunemente usato per cancellare dipendenze che richiedono risorse al componente che non saranno semplicemente rimosse con lo smontaggio del componente (ad esempio, la rimozione di qualsiasi istanza setInterval() che è correlata al componente o un "eventListener" impostato sul "documento" a causa della presenza del componente).

render è il metodo di ciclo di vita più importante e l'unico richiesto in qualsiasi componente. Di solito viene chiamato ogni volta che viene aggiornato lo stato del componente, che dovrebbe riflettersi nell'interfaccia utente.

JSX

JSX, o JavaScript XML, è un'estensione della sintassi del linguaggio JavaScript. Simile nell'aspetto all'HTML, JSX fornisce un modo per strutturare il rendering dei componenti usando una sintassi familiare a molti sviluppatori. I componenti di React sono in genere scritti usando JSX, sebbene non debbano esserlo (i componenti possono anche essere scritti in puro JavaScript). JSX è simile a un'altra sintassi di estensione creata da Facebook per PHP chiamata XHP.

Un esempio di codice JSX:

Elementi nidificati

Elementi multipli sullo stesso livello devono essere racchiusi in un singolo elemento contenitore come l'elemento <div> mostrato sopra o restituiti come matrice.

Attributi

JSX offre una gamma di attributi di elemento progettati per rispecchiare quelli forniti da HTML. Possono essere passati al componente anche attributi personalizzati. Tutti gli attributi verranno ricevuti dal componente come props.

Espressioni JavaScript

Le espressioni JavaScript (ma non le istruzioni) possono essere utilizzate all'interno di JSX con parentesi graffe {}:

L'esempio sopra verrà così visualizzato:

Dichiarazioni condizionali

Le istruzioni if-else non possono essere utilizzate all'interno di JSX ma è possibile utilizzare espressioni condizionali. L'esempio seguente mostrerà { i === 1 ? 'true' : 'false' } come stringa 'true' perché i è uguale a 1.

Quanto sopra renderà:

Le funzioni e JSX possono essere utilizzate nei condizionali:

Quanto sopra renderà:

Il codice scritto in JSX richiede la conversione con uno strumento come <i>Babel</i> prima di poter essere compreso dai browser web. Questa elaborazione viene generalmente effettuata nel corso del processo di costruzione del software, prima che l'applicazione venga distribuita.

Architettura oltre HTML

L'architettura di base di React si applica oltre al rendering HTML nel browser. Ad esempio, Facebook ha grafici dinamici che eseguono il rendering in tag <canvas> e Netflix e PayPal utilizzano il caricamento universale per eseguire il rendering di HTML identico sia sul server che sul client.

Servizi correlati

Altre voci

C

Colori Web

I colori Web sono colori usati nella visualizzazione di pagine Web sul World Wide Web e nei metodi per descrivere e specificare tali colori. I colori possono essere specificati come una tripletta RGB o in formato esadecimale (una tripletta esadecimale) o in alcuni casi in base ai loro nomi…

Leggi la voce →
T

Tipografia web

Per tipografia web si intende l'uso di caratteri sul World Wide Web. Quando è stato implementato per la prima volta l'HTML i volti e gli stili dei caratteri erano controllati esclusivamente dalle impostazioni di ciascun browser web. Non c'era alcun meccanismo per le singole pagine Web per…

Leggi la voce →
Pagina web dinamicaP

Pagina web dinamica

Una pagina web dinamica è una pagina web il cui contenuto, in tutto o in parte, è generato sul momento dal server, potendo dunque essere diversa ogni volta che viene richiamata consentendo un'interattività con l'utente. Questa tipologia di pagina si è diffusa nel contesto del Web 2.0.

Leggi la voce →
D

Design

Il design (pronuncia inglese [dɪˈzaɪn], italianizzata in "disàin" o "desàin") è quella disciplina che si occupa della progettazione di oggetti fisici, digitali o concettuali, attraverso la stesura di un progetto che coniughi funzionalità ed estetica.

Leggi la voce →
D

Domain Name System

Domain Name System (DNS, lett. "sistema dei nomi di dominio"), in informatica e telecomunicazioni, indica un sistema per assegnare nomi ai nodi della rete (in inglese host).

Leggi la voce →
D

Design pattern

Nell'ingegneria del software, un design pattern (o schema di progettazione) è una soluzione progettuale di carattere generale e riutilizzabile a un problema ricorrente che si presenta comunemente durante le fasi di progettazione e sviluppo del software.

Leggi la voce →