Commits (2)
......@@ -24,6 +24,7 @@
<section data-markdown="./md/json.md" data-separator="^---$" data-separator-vertical="^\n\n" data-separator-notes="^Note:" data-charset="utf-8"></section>
<section data-markdown="./md/promise.md" data-separator="^---$" data-separator-vertical="^\n\n" data-separator-notes="^Note:" data-charset="utf-8"></section>
<section data-markdown="./md/fetch.md" data-separator="^---$" data-separator-vertical="^\n\n" data-separator-notes="^Note:" data-charset="utf-8"></section>
<section data-markdown="./md/react.md" data-separator="^---$" data-separator-vertical="^\n\n" data-separator-notes="^Note:" data-charset="utf-8"></section>
</div>
</div>
......@@ -47,11 +48,11 @@
window.addEventListener("mousedown", handleClick, false);
window.addEventListener("contextmenu", function(e) { e.preventDefault(); }, false);
function handleClick(e) {
e.preventDefault();
if(e.button === 0) Reveal.next();
if(e.button === 2) Reveal.prev();
}
// function handleClick(e) {
// e.preventDefault();
// if(e.button === 0) Reveal.next();
// if(e.button === 2) Reveal.prev();
// }
</script>
</body>
</html>
......@@ -32,7 +32,8 @@
}
```
-----
---
### Destructuration en JavaScript
#### Sur les objets
```JS
......@@ -61,4 +62,3 @@ console.log(premier); // pomme
console.log(deuxieme); // banane
console.log(troisieme); // orange
```
---
# Les promises
---
```JS
const maPromise = new Promise((resolve, reject) => {
// Effectuer une opération asynchrone, par exemple une requête HTTP
......
# Introduction à React
---
## Composants
<small>Exemple de composant :</small>
```jsx []
import React from 'react';
function HelloWorld() {
return <h1>Hello, World!</h1>;
}
export default HelloWorld;
```
---
## Composants
<small>Exemple d'utilisation d'un composant :</small>
```jsx [5-11]
import React from 'react';
import ReactDOM from 'react-dom';
import HelloWorld from './HelloWorld';
function App() {
return (
<div>
<HelloWorld />
</div>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
```
---
## Props
<small>Les props sont des arguments passés à des composants.</small>
```jsx []
import React from 'react';
function Hello(props) {
return <h1>Hello, {props.name}!</h1>;
}
export default Hello;
```
```jsx []
<Hello name="Alice" />
```
---
## Gestion d'état avec useState
<small>useState permet aux composants de gérer leur état.</small>
```jsx [1-15|4|8|10]
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Compteur: {count}</p>
<button
onClick={() => setCount(count + 1)}>
Incrémenter
</button>
</div>
);
}
```
---
## Effets avec useEffect
<small>useEffect permet d'effectuer des opérations en réponse à des changements dans le composant.</small>
```jsx []
import React, { useState, useEffect } from 'react';
function Timer() {
const [seconds, setSeconds] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setSeconds(seconds + 1);
}, 1000);
return () => clearInterval(timer);
}, [seconds]);
return <p>Temps écoulé: {seconds} secondes</p>;
}
```
---
## Contexte en React
<small>Le contexte permet de transmettre des données à travers l'arbre des composants sans avoir besoin de passer explicitement des props à chaque niveau.</small>
```jsx [1-15|4|6-12|14]
import React, { createContext, useContext } from 'react';
// Création du contexte
const ThemeContext = createContext('light');
// Composant fournissant le contexte
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
// Composant consommant le contexte
function Toolbar() {
return (
<div>
<ThemedButton />
</div>
);
}
// Composant consommant le contexte avec le hook useContext
function ThemedButton() {
const theme = useContext(ThemeContext);
return <button>{theme}</button>;
}
export default App;
```
---
## Gestion d'événements dans un contexte
```jsx []
import React, { createContext, useContext, useState } from 'react';
// Création du contexte
const ThemeContext = createContext();
// Composant fournissant le contexte
function App() {
const [theme, setTheme] = useState('light'); // État du thème
// Fonction pour basculer entre les thèmes
const toggleTheme = () => {
setTheme(prevTheme => (prevTheme === 'light' ? 'dark' : 'light'));
};
// Fonction de gestion d'événement
const handleButtonClick = () => {
console.log('Le bouton a été cliqué!');
};
return (
<ThemeContext.Provider value={{ theme, toggleTheme, handleButtonClick }}>
<Toolbar />
</ThemeContext.Provider>
);
}
// Composant consommant le contexte
function Toolbar() {
return (
<div>
<ThemedButton />
</div>
);
}
// Composant consommant le contexte avec le hook useContext
function ThemedButton() {
const { theme, toggleTheme, handleButtonClick } = useContext(ThemeContext);
return (
<button onClick={toggleTheme} onMouseEnter={handleButtonClick}>
Changer de thème ({theme})
</button>
);
}
export default App;
```