Collaborer avec l'IA

Maintenant que vous maitrisez les fondamentaux React, apprenons a collaborer avec l'IA specifiquement pour vos projets React.

Philosophie du cours

Vous pilotez, l'IA execute !

Votre connaissance de React vous permet de :

  • Valider le code genere
  • Deboguer les erreurs
  • Donner des prompts precis
  • Adapter les solutions a vos besoins

Valider le code React genere par l'IA

Quand l'IA genere du code React, verifiez ces points :

1. Function components (pas de classes)

javascript
// ❌ L'IA a genere une classe ?
class MyComponent extends React.Component {
  render() { return <div>Hello</div>; }
}

// ✅ Corrigez en function component
function MyComponent() {
  return <div>Hello</div>;
}

2. Hooks au top level

javascript
// ❌ Hook dans une condition
function Component({ isLoggedIn }) {
  if (isLoggedIn) {
    const [user, setUser] = useState(null); // ❌ Hook conditionnel !
  }
}

// ✅ Hooks toujours en haut du composant
function Component({ isLoggedIn }) {
  const [user, setUser] = useState(null); // ✅ Au top level
  if (!isLoggedIn) return <p>Please login</p>;
  return <p>Hello {user?.name}</p>;
}

3. Immutabilite de l'etat

javascript
// ❌ Mutation du tableau original
const addItem = (items, newItem) => {
  items.push(newItem);
  return items;
};

// ✅ Nouveau tableau avec spread
const addItem = (items, newItem) => {
  return [...items, newItem];
};

4. Gestion d'erreur dans les fetch

javascript
// ❌ Pas de gestion d'erreur
useEffect(() => {
  fetch('/api/users')
    .then(res => res.json())
    .then(data => setUsers(data));
}, []);

// ✅ Gestion loading + error
useEffect(() => {
  setLoading(true);
  fetch('/api/users')
    .then(res => {
      if (!res.ok) throw new Error('Erreur HTTP');
      return res.json();
    })
    .then(data => {
      setUsers(data);
      setLoading(false);
    })
    .catch(err => {
      setError(err.message);
      setLoading(false);
    });
}, []);

Quel pattern l'IA genere-t-elle parfois et qui est obsolete ?

Exemples de prompts pour React

Creer un composant

"Cree un composant React SearchBar avec :
- Un input controle (useState)
- Un bouton clear qui vide l'input
- Une prop onSearch appelee quand on appuie sur Enter
- Destructuration des props"

Deboguer une erreur

"J'ai cette erreur : 'Cannot read property map of undefined'
Voici mon code :
[coller le code]
Qu'est-ce qui cause cette erreur ?"

Creer un custom hook

"Cree un custom hook useLocalStorage qui :
- Prend (key, initialValue) comme parametres
- Retourne [value, setValue] comme useState
- Persiste automatiquement dans localStorage
- Charge la valeur au premier rendu"

Demander une review

"Peux-tu review ce composant React et suggerer des ameliorations ?
[coller le code]
Focus sur :
- Les bonnes pratiques React
- La gestion d'erreur
- La lisibilite"

Quel type de prompt donne les meilleurs resultats avec l'IA ?

Ameliorer du code avec l'IA

L'IA est utile pour ameliorer du code existant par iterations :

Iteration 1 : Code fonctionnel

jsx
// Votre code qui fonctionne mais manque de gestion d'erreur
function UserList() {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetch('/api/users')
      .then(res => res.json())
      .then(data => setUsers(data));
  }, []);

  return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

Prompt : "Ajoute la gestion de loading et error a ce composant"

Iteration 2 : Extraire dans un hook

Prompt : "Extrais la logique de fetch dans un custom hook useFetch"

Iteration 3 : Ajouter une fonctionnalite

Prompt : "Ajoute une barre de recherche pour filtrer les utilisateurs par nom"

Astuce

Avantage de l'approche iterative : Vous comprenez chaque etape du code car vous partez d'une base que vous maitrisez. L'IA ajoute une fonctionnalite a la fois, ce qui est plus facile a valider qu'un code complet genere d'un coup.

Questions a vous poser

Avant d'utiliser du code genere par l'IA :

1. Comprehension

  • Est-ce que je comprends ce que fait chaque ligne ?
  • Si quelqu'un me demande d'expliquer, je peux ?

2. Qualite

  • Le code suit-il les bonnes pratiques React ?
  • Y a-t-il des mutations directes d'objets/tableaux ?
  • Les hooks respectent-ils les regles (top level, pas conditionnel) ?

3. Adaptation

  • Puis-je adapter ce code a mes besoins ?
  • Que faire si j'ai un bug ?

Signal d'alarme

Si vous repondez "non" a la question 1 (comprehension), STOP !

Ne copiez jamais du code que vous ne comprenez pas. Demandez a l'IA d'expliquer ou de simplifier.

Quelle est la meilleure approche pour utiliser l'IA quand vous developpez ?

Recapitulatif

Points cles

  • Validez toujours le code React genere (function components, hooks au top level, immutabilite)
  • Ecrivez des prompts specifiques avec details techniques
  • Ameliorez par iterations plutot que de demander tout d'un coup
  • Verifiez la gestion d'erreur et de chargement
  • Ne copiez jamais du code que vous ne comprenez pas