1/
-Séparation claire de la logique de l'application
-Prévisibilité
-Facilité de test
-Possibilité de développer des applications distribuées
-Possibilité de "undo" et "redo"
ex2
1-c
2-b
3-c
4-d
5-d
Exercice 3/ Full Stack::
Code 1 est utilisé pour effectuer une requête HTTP à l'aide de la fonction fetch() pour récupérer des
données à partir de l'URL spécifiée, qui renvoie une réponse en format JSON. La méthode then() est
utilisée pour traiter cette réponse, en utilisant console.log(response) pour afficher la réponse dans la
console, puis en utilisant response.json() pour convertir la réponse en un objet JavaScript. Enfin, la
méthode setState() est utilisée pour mettre à jour l'état de l'application en utilisant les données
récupérées.
ex 3
code 2
un composant React pour gérer l'état (nombre de clics sur un bouton) et les effets secondaires (mise
à jour du titre de la page en fonction des clics). useState permet de déclarer une variable count et
une fonction pour la mettre à jour, tandis que useEffect permet de gérer les effets secondaires (mise
à jour du titre de la page) en fonction de cette variable. Le composant affiche également un message
indiquant le nombre de clics sur le bouton.
Partie pratique- full stack ::
1/
import React from 'react';
const ProductList = (props) => {
return (
<div>
{props.products.map((product) => (
<Product
key={product.id}
id={product.id}
intitule={product.intitule}
prix={product.prix}
source={product.source}
/>
))}
</div>
);
};
const Product = (props) => {
return (
<div>
<h2>{props.intitule}</h2>
<img src={props.source} alt={props.intitule} />
<p>Prix: {props.prix}</p>
</div>
);
};
export default ProductList;
2/
import React from 'react';
const ProductDetail = (props) => {
return (
<div>
<h1>{props.intitule}</h1>
<img src={props.source} alt={props.intitule} />
<p>{props.prix}</p>
<p>{props.description}</p>
</div>
);
};
export default ProductDetail;
3//
import React, { Component } from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import ProductList from './ProductList';
import ProductDetail from './ProductDetail';
class App extends Component {
render() {
return (
<Router>
<div>
<Route
exact
path="/"
render={(props) => <ProductList {...props} products={products} />}
/>
<Route
path="/product/:id"
render={(props) => (
<ProductDetail
{...props}
products={products}
product={products.find((p) => p.id === Number(props.match.params.id))}
/>
)}
/>
</div>
</Router>
);
export default App;