React est gratuit et open-source sur GitHub
React permet de construire une interface utilisateur, en créant des fonctions, appelées "Components" auxquelles on passe des paramètres et qui renvoient du HTML. React agit sur un DOM virtuel qui ne met à jour le rendu dans le navigateur que quand on le veut.
Ca facilite la création de sites qui vont être complètement adaptés à l'utilisateur connecté.
Un "JavaScript augmenté", pas obligatoire, mais qui permet une utilisation plus claire de React, en écrivant du HTML directement dans le code JavaScript. Example :
En Javascript React pour créer un lien on écris :
React.createElement('a', {href: 'https://facebook.github.io/react/'}, 'Hello!')
Et en JSX :
Hello!
LE JSX transforme une balise HTML en la passant comme paramètre à la fonction React.createElement
Le JSX permet un gros gain de temps quand on veut par exemple créer des balises HTML mères et filles d'un coup:
En JavaScript :
var app = React.createElement(
nav,
{color:"blue"},
React.createElement(li, null, "click")
);
Et en JSX :
var app = ;
La création de Component avec React.js
On crée deux Components "CommentList" :
var CommentList = React.createClass({
render: function() {
var commentNodes = this.data.map(function(comment) {
return (
{comment.text}
);
});
return (
);
}
});
ReactDOM.render(
< CommentList data={data} />,
document.getElementById('container')
);
Et "Comment" :
var Comment = React.createClass({
render: function() {
return (
{this.props.author}
{this.props.children}
);
}
});
En passant à notre variable data un JSON des commentaires récupérés (normalement côté serveur)
var data = [
{id: 1, author: "le_lutin", text: "CECI EST UN COMMENTAIRE!!"},
{id: 2, author: "abdel-malik", text: "Ceci est un lien vers de la doc"}
];
Les commentaires viendront se ranger en temps réel dans notre liste CommentList !
On aura donc dans notre DOM :
le_lutin
CECI EST UN COMMENTAIRE!!
abdel-malik
Ceci est un lien vers de la doc
Le cycle de vie d'un Component est divisé en 3 états :
On utilise donc ces méthodes :
Les méthodes avec "Will" agissent avant le changement d'état du component, et celles avec "Did" agissent après.
Le principal concurrent de React est Angular.JS. Angular est un Framework plus complet mais React se démarque en utilisant son DOM virtuel qui peut être converti soit en string HTML pour le serveur ou en DOM dans notre navigateur. Cela améliore grandement les performances et l'optimisation.