React rende la creazione di UI interattive facile e indolore. Progetta interfacce per ogni stato della tua applicazione. Ad ogni cambio di stato React aggiornerà efficientemente solamente le parti della UI che dipendono da tali dati.
La natura dichiarativa dell’UI rende il tuo codice più prevedibile e facile da debuggare.
Crea componenti in isolamento e componili per creare UI complesse.
Dato che interazioni e logica per i componenti sono implementate in JavaScript puoi facilmente passare ed accedere strutture dati complesse in vari punti della tua applicazione senza dover salvare informazioni sul DOM.
Non facciamo supposizioni sulle tecnologie che utilizzi correntemente. In questo modo puoi sviluppare nuove funzionalità in React senza riscrivere codice esistente.
React può inoltre effettuare rendering lato server con Node e in applicazioni mobile grazie a React Native.
I componenti React implementano un metodo render()
che riceve dati in input e ritorna cosa deve visualizzare. Questo esempio usa una sintassi simile ad XML chiamata JSX. I dati passati in input al componente possono essere acceduti da render()
via this.props
.
JSX è opzionale e non richiesto per utilizzare React. Prova il tool Babel REPL per vedere il codice JavaScript grezzo generato nel processo di compilazione JSX.
Oltre a ricevere dati in input (accessibili via this.props
), un componente può mantenere i dati del suo stato interno (accessibili via this.state
). Quando lo stato di un componente cambia, il codice markup generato viene aggiornato invocando di nuovo render()
, ciò avviene automaticamente.
Usando props
e state
, possiamo costruire una piccola applicazione Todo (lista delle cose da fare). Questo esempio usa state
per tracciare la lista corrente degli elementi oltre a cosa ha inserito l’utente. Anche se gli event handlers sembrano renderizzati inline, essi vengono raccolti ed implementati mediante delegati.
React ti permette di interfacciarti con altre librerie e frameworks. Questo esempio usa remarkable, una libreria esterna Markdown, per convertire il contenuto di una <textarea>
in tempo reale.