React est une librairie Javascript qui se concentre sur la gestion des affichages au sein d'une page web :
React n'offre aucun autre outil :
React naît du besoin assez ancien (premières tentatives en 1998) d'avoir des éléments HTML personnalisés (Composants) dont les propriétés et comportements sont plus riches et adaptés aux besoins des développeurs
On peut utiliser React avec toutes les autres librairies qu'on aime !
Assez peu de concepts "core" à apprendre, courbe d'apprentissage rapide (hors librairies tierces)
React doit être complété par d'autres outils, il ne s'occupe que de l'affichage.
Il faut donc se former à d'autres librairies pour avoir quelque chose de complet
AJAX (HTTP)
Validation (Forms et autres)
Routage avec React Router Dom
Autres
Avec React, on considère une interface comme un ensemble de composants qui interagissent entre eux
Ces composants peuvent avoir une hiérarchie, communiquer entre eux et réagir aux événements
Un composant, ce n'est que :
Lorsque l'état (appelé state) du composant change, le rendu réagit et se met à jour (d'où le nom React)
Le composant reçoit des données et des traitements de composants voisins / parents
Pour instancier un composant React, il faut normalement appeler la méthode React.createElement()
L'écriture classique étant peu ergonomique, Facebook a créé le JSX, un sucre syntaxique qui permet de créer des éléments en écrivant du HTML
React.createElement(
MyButton,
{color: 'blue', shadowSize: 2},
'Click Me'
)
<MyButton color="blue" shadowSize={2}>
Click Me
</MyButton>
Un Composant Statefull est un composant qui porte des données (un state, un état) qui peuvent changer et dont il se sert pour déterminer un rendu
On les représente par des classes plus ou moins complexes
Un Composant Stateless est un composant qui ne porte pas de données par lui-même (il n'a pas de state, d'état)
Il s'appuie sur les données que d'autres lui fournissent (propriétés ou props)
On les représente par une simple fonction
import React, { Component } from "react";
class Counter extends Component {
state = {
value: 0
};
handleIncrement = () => {
const value = this.state.value + 1;
this.setState({ value });
};
render() {
return (
<div>
<strong>{this.state.value}</strong>
<button onClick={this.handleIncrement}>Increment</button>
</div>
);
}
}
export default Counter;
import React from "react";
const Header = function(props) {
return (
<header>
<h1>{props.title}</h1>
<p>{props.introduction}</p>
</header>
);
};
export default Header;
// Autre fichier
<Header
title="Cours de React"
introduction="Dans ce cous nous allons voir ..."
/>;
Documentation officielle :
https://reactjs.org/docs/
Tutorial officiel :
https://reactjs.org/tutorial/tutorial.html
Wes Bos, formateur talentueux : https://reactforbeginners.com/ et https://advancedreact.com/
Anthony Welc, amoureux de React : https://www.youtube.com/channel/UChhPkjgG1-iLUOmURGdgQrw et https://www.udemy.com/reactjs-pour-les-debutants/