Created by Facebook
Mantiene l'interfaccia dell'applicazione aggiornata ad ogni cambiamento dei dati
MVC
Ogni cosa in React è un componente isolato e riusabile.
Un componente è una classe React.
Può accettare parametri in ingresso e avere uno stato e in più è possibile:
Le properties sono le opzioni/configurazioni di un componente, vengono passate dal padre e sono immutabili.
Lo stato dovrebbe contenere dati che vengono modificati dagli handlers (i.e. User interactions, Server responses etc.)
setState(data, callback)
Da ricordare però che lo stato è opzionale e va evitato il più possibile per evitare di complicare le cose.
Serie di eventi builtin.
Tutti cross-browser:
Clipboard, Keyboard, Focus, Form, Mouse, Touch, UI, Wheel
React usa una sua rappresentazione interna del DOM
e va a modificare il DOM reale usando un algoritmo di differenza ad albero più uno euristico O(n^3) => O(n)
Tradotto: potete anche ricaricare l'intera app a FE senza preoccuparvi delle performance
E' molto veloce perchè viene eseguito tutto in JS prima di effettuare le modifiche al dom che sono molto lente
I dati (tramite le props) vengono passati solo in un verso. Dal padre ai figli.
Ci fa scrivere del codice organizzato in componenti, mantenendo il codice di ognuno in un unico punto e ad avere performance pazzesche nell'aggiornare il FE.
Per applicazioni complesse però può non essere abbastanza e qui entrano in gioco Flux e Redux.
Sono delle architetture che ci aiutano a costruire applicazioni complesse e sono complementari a React.
Sono più un pattern che un framework.
Simile a Flux, ma con alcune differenze