Nouveau : Datasets open source gratuits disponibles !Decouvrir →
⚛️
Web 12 min intermediaire

Les erreurs a eviter en React

Sommaire

Erreur N1 : Manque de structure et d'organisation

Le problème

Il est courant de voir des projets React mal organisés avec des fichiers mixtes, une architecture confuse et une répartition des composants désordonnée.

// Exemple de code non organisé
import React from 'react';

const Header = () => <h1>Header</h1>;
const Footer = () => <footer>Footer</footer>;

class App extends React.Component {
  render() {
    return (
      <div>
        <h1>Welcome to My App</h1>
        <p>This is a paragraph.</p>
      </div>
    );
  }
}

export default App;

Pourquoi c'est une erreur

L'absence de structure rend le code difficile à lire, à maintenir et à évoluer. Cela augmente également le risque d'erreurs et réduit la productivité des développeurs.

  • Performance : Un code mal organisé peut être plus lent à rendre.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet sans structure.
  • Maintenabilité : La maintenance d'un projet sans organisation est beaucoup plus complexe et coûteuse.

La solution

Organisez votre projet en suivant une architecture claire, comme celle proposée par Create React App ou en utilisant des modèles tels que Flux ou Redux.

// Exemple de code organisé
src/
├── components/
│   ├── Header.js
│   ├── Footer.js
│   └── MainContent.js
├── pages/
│   ├── Home.js
│   ├── About.js
│   └── NotFound.js
├── App.js
└── index.js

Comment prévenir

  • Adopter un modèle de projet : Utilisez des modèles bien structurés comme Create React App ou Next.js.
  • Utiliser ESLint : Configurez ESLint pour encourager une organisation cohérente.
  • Règles de codage : Établissez et appliquez des règles de codage qui prévoient une structure claire.

Erreur N2 : Utilisation excessive d'états locaux

Le problème

Il est courant de voir des composants React avec des états locaux très complexes, rendant le code difficile à lire et à maintenir.

// Exemple de code avec un état local complexe
import React from 'react';

const ComplexForm = () => {
  const [formData, setFormData] = React.useState({
    name: '',
    email: '',
    address: {
      street: '',
      city: '',
      zipCode: ''
    },
    preferences: {
      newsletter: false,
      promotions: true
    }
  });

  const handleChange = (e) => {
    setFormData((prev) => ({
      ...prev,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <form>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
      <input name="street" onChange={handleChange} />
      <input name="city" onChange={handleChange} />
      <input name="zipCode" onChange={handleChange} />
      <label>
        Newsletter
        <input type="checkbox" name="newsletter" checked={formData.preferences.newsletter} onChange={handleChange} />
      </label>
      <label>
        Promotions
        <input type="checkbox" name="promotions" checked={formData.preferences.promotions} onChange={handleChange} />
      </label>
    </form>
  );
};

export default ComplexForm;

Pourquoi c'est une erreur

L'utilisation excessive d'états locaux rend le code difficile à lire, à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états locaux sont moins performants que les états globaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états locaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états locaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les états globaux pour gérer les données complexes et le flux d'informations.

// Exemple de code avec des états globaux
import React, { useContext } from 'react';
import FormContext from './FormContext';

const ComplexForm = () => {
  const { formData, setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData((prev) => ({
      ...prev,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <form>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
      <input name="street" onChange={handleChange} />
      <input name="city" onChange={handleChange} />
      <input name="zipCode" onChange={handleChange} />
      <label>
        Newsletter
        <input type="checkbox" name="newsletter" checked={formData.preferences.newsletter} onChange={handleChange} />
      </label>
      <label>
        Promotions
        <input type="checkbox" name="promotions" checked={formData.preferences.promotions} onChange={handleChange} />
      </label>
    </form>
  );
};

export default ComplexForm;

Comment prévenir

  • Utiliser des contextes : Utilisez les contextes pour gérer les états globaux.
  • Adopter un flux de données : Utilisez des flux de données tels que Redux ou MobX pour gérer les états complexes.
  • Règles ESLint : Configurez ESLint pour encourager l'utilisation d'états locaux simples.

Erreur N3 : Manque de contrôle sur les props

Le problème

Il est courant de voir des composants React qui acceptent n'importe quelles props, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un composant qui accepte n'importe quelles props
import React from 'react';

const UncontrolledComponent = ({ children }) => <div>{children}</div>;

export default UncontrolledComponent;

Pourquoi c'est une erreur

L'utilisation excessive d'états locaux rend le code difficile à lire, à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états locaux sont moins performants que les états globaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états locaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états locaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez des composants contrôlés pour gérer les props et s'assurer qu'elles sont valides.

// Exemple de code avec un composant contrôlé
import React, { useState } from 'react';

const ControlledComponent = ({ initialValue }) => {
  const [value, setValue] = useState(initialValue);

  const handleChange = (e) => {
    setValue(e.target.value);
  };

  return <input value={value} onChange={handleChange} />;
};

export default ControlledComponent;

Comment prévenir

  • Utiliser des composants contrôlés : Utilisez des composants contrôlés pour gérer les props.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les props sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la validation des props.

Erreur N4 : Manque de contrôle sur les états locaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état local, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état local modifié directement
import React from 'react';

const Component = () => {
  const [count, setCount] = React.useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état local dans des fonctions qui modifient directement l'état locaux rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états locaux sont moins performants que les états globaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états locaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états locaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état local pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état local
import React from 'react';

const Component = () => {
  const [count, setCount] = React.useState(0);

  const increment = () => {
    setCount(prevCount => prevCount + 1);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état local : Utilisez les fonctions qui modifient l'état local pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état local sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état local.

Erreur N5 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N6 : Manque de contrôle sur les props et états locaux

Le problème

Il est courant de voir des composants React qui modifient directement les props ou les états locaux, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état local modifié directement
import React from 'react';

const Component = ({ initialValue }) => {
  const [value, setValue] = React.useState(initialValue);

  const increment = () => {
    value++;
    setValue(value);
  };

  return (
    <div>
      <p>{value}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de props et états locaux dans des fonctions qui modifient directement ces valeurs rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états locaux sont moins performants que les états globaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états locaux et props.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états locaux et props est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient les props et états locaux pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état local et les props
import React, { useState } from 'react';

const Component = ({ initialValue }) => {
  const [value, setValue] = React.useState(initialValue);

  const increment = () => {
    setValue(prevState => prevState + 1);
  };

  return (
    <div>
      <p>{value}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient les props et états locaux : Utilisez les fonctions qui modifient les props et états locaux pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de props et états locaux sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte des props et états locaux.

Erreur N7 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N8 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N9 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N10 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N11 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N12 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N13 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N14 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et coûteuse.

La solution

Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.

// Exemple de code avec une fonction qui modifie l'état global
import React, { useContext } from 'react';
import FormContext from './FormContext';

const Component = () => {
  const { setFormData } = useContext(FormContext);

  const handleChange = (e) => {
    setFormData(prevState => ({
      ...prevState,
      [e.target.name]: e.target.value
    }));
  };

  return (
    <div>
      <input name="name" onChange={handleChange} />
      <input name="email" onChange={handleChange} />
    </div>
  );
};

export default Component;

Comment prévenir

  • Utiliser des fonctions qui modifient l'état global : Utilisez les fonctions qui modifient l'état global pour s'assurer que les modifications sont correctes.
  • Ajouter des validations : Ajoutez des validations pour s'assurer que les modifications de l'état global sont valides.
  • Règles ESLint : Configurez ESLint pour encourager la modification correcte de l'état global.

Erreur N15 : Manque de contrôle sur les états globaux

Le problème

Il est courant de voir des composants React qui modifient directement l'état global, ce qui rend le code difficile à maintenir et à tester.

// Exemple de code avec un état global modifié directement
import React from 'react';
import { useState } from 'react';

const Component = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    count++;
    setCount(count);
  };

  return (
    <div>
      <p>{count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
};

export default Component;

Pourquoi c'est une erreur

L'utilisation de l'état global dans des fonctions qui modifient directement l'état global rend le code difficile à maintenir et à tester. Cela augmente également le risque d'erreurs.

  • Performance : Les états globaux sont moins performants que les états locaux.
  • Sécurité : Il est plus facile de commettre des erreurs de sécurité dans un projet avec beaucoup d'états globaux.
  • Maintenabilité : La maintenance d'un projet avec beaucoup d'états globaux est beaucoup plus complexe et co

Un projet tech a lancer ?

Besoin d'un accompagnement ? Decrivez votre projet pour des recommandations.

Recevoir des conseils

Questions frequentes

Quelles sont les erreurs courantes à éviter en utilisant React?
Il existe plusieurs erreurs courantes à éviter en utilisant React, notamment la confusion entre state et props, l'oubli de bind sur des méthodes de classe et le manque de compréhension du cycle de vie des composants.
Comment éviter les problèmes de performance dans un application React?
Pour éviter les problèmes de performance, il est important d'utiliser React.memo pour les composants pure et de passer uniquement des dépendances nécessaires aux hooks comme useEffect. En outre, optimisez les listes grâce à la mémoisation avec key.
Quelle est la meilleure pratique pour gérer les erreurs en React?
La gestion des erreurs est cruciale en React. Utilisez try-catch autour de code qui peut lever une erreur et utilisez des composants ErrorBoundary personnalisés pour capturer et afficher des erreurs sans arrêter l'application.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.