Maison > interface Web > js tutoriel > Réagissez aux erreurs d'accessoires qui nuisent aux performances de votre application

Réagissez aux erreurs d'accessoires qui nuisent aux performances de votre application

DDD
Libérer: 2024-11-21 08:20:14
original
610 Les gens l'ont consulté

eact Props Mistakes That Are Hurting Your App

Les accessoires dans React peuvent sembler simples, mais une mauvaise gestion peut ralentir l'exploration de votre application. Au fil du temps, après avoir codé et vu certains projets React, j'ai remarqué dix erreurs liées aux accessoires qui continuent de surgir. Ces problèmes pourraient également se cacher dans votre code.

Ne vous inquiétez pas, nous sommes là pour les résoudre ensemble. Allons-y et rendons votre application React plus rapide et plus efficace !

1} Arrêtez de transmettre des objets entiers lorsque seules des propriétés spécifiques sont nécessaires

Transmettre des objets entiers en tant qu'accessoires lorsque votre composant n'a besoin que de quelques propriétés entraîne des rendus inutiles à chaque fois que l'objet est mis à jour, même si les valeurs que vous utilisez restent les mêmes.

// Not ideal
function UserProfile({ user }) {
  // Only uses name and email
  return (
    <div>
      <h2>{user.name}</h2>
      <p>{user.email}</p>
    </div>
  );
}

// Better
function UserProfile({ name, email }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>{email}</p>
    </div>
  );
}
Copier après la connexion
Copier après la connexion

Ne transmettez que ce qui est nécessaire. En gardant les accessoires concentrés et minimaux, vous réduirez la fréquence de rendu des composants, ce qui donnera à votre application une amélioration notable des performances.

2} Évitez de créer de nouveaux objets dans les accessoires à chaque rendu

Un autre coupable caché est la création d'objets en ligne dans les accessoires. Lorsque vous effectuez cela, vous créez de nouvelles références d'objet à chaque rendu de votre composant. Ces nouvelles références forcent le rendu des composants enfants, même si les valeurs sont identiques.

// Not efficient
function ParentComponent() {
  return (
    <ChildComponent 
      styles={{ margin: '20px', padding: '10px' }}
      config={{ theme: 'dark', animate: true }}
    />
  );
}

// Smarter approach
const styles = { margin: '20px', padding: '10px' };
const config = { theme: 'dark', animate: true };

function ParentComponent() {
  return (
    <ChildComponent 
      styles={styles}
      config={config}
    />
  );
}
Copier après la connexion
Copier après la connexion

Prenez les définitions d'objets en dehors de votre composant ou utilisez useMemo pour celles créées dynamiquement. Il s'agit d'une simple modification, mais elle peut réduire considérablement les rendus inutiles et assurer le bon fonctionnement de tout.

3} Évitez de répandre inutilement des accessoires

Utiliser la propagation d'accessoires (...accessoires) peut sembler pratique, mais cela fait souvent plus de mal que de bien. Il transmet les accessoires dont vous n'avez pas besoin, rend votre composant plus difficile à déboguer et peut même déclencher des rendus indésirables.

// Inefficient
function Parent() {
  const props = {
    name: 'John',
    age: 30,
    email: 'john@email.com',
    phone: '1234567890',
    address: '123 Street'
  };

  return <UserCard {...props} />;
}

// A better way
function Parent() {
  const props = {
    name: 'John',
    age: 30,
    email: 'john@email.com',
    phone: '1234567890',
    address: '123 Street'
  };

  return <UserCard name={props.name} email={props.email} />;
}
Copier après la connexion
Copier après la connexion

En spécifiant uniquement les accessoires dont vous avez besoin, vous rendez votre composant plus propre et plus prévisible. Cela permet à votre application de rester plus rapide et plus facile à maintenir.

4} Mémorisez toujours les accessoires de rappel

Les fonctions de rappel non mémorisées peuvent nuire silencieusement aux performances. Chaque fois que votre composant effectue un nouveau rendu, une nouvelle instance de fonction est créée. Cela peut interrompre les optimisations des composants enfants à l'aide de React.memo ou provoquer des rendus inutiles.

// Not optimal
function TodoList() {
  const handleClick = (id) => {
    // handle click
  };

  return <TodoItem onClick={handleClick} />;
}

// Optimal approach
function TodoList() {
  const handleClick = useCallback((id) => {
    // handle click
  }, []); // Include dependencies if needed

  return <TodoItem onClick={handleClick} />;
}
Copier après la connexion
Copier après la connexion

Enveloppez les accessoires de rappel avec useCallback lorsque vous les transmettez à des composants mémorisés ou que vous les utilisez dans useEffect. Cela garantit des références stables et évite les mises à jour inutiles.

5} Arrêtez le forage d'accessoires à travers plusieurs niveaux

Faire passer des accessoires à travers plusieurs composants qui ne les utilisent même pas est un moyen infaillible de créer des rendus inutiles et du code désordonné. C'est ce qu'on appelle le forage d'accessoires, et cela peut rendre votre application plus difficile à gérer à mesure qu'elle se développe.

// Not ideal
function UserProfile({ user }) {
  // Only uses name and email
  return (
    <div>
      <h2>{user.name}</h2>
      <p>{user.email}</p>
    </div>
  );
}

// Better
function UserProfile({ name, email }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>{email}</p>
    </div>
  );
}
Copier après la connexion
Copier après la connexion

Au lieu de transmettre des accessoires à travers chaque couche, utilisez des outils comme React Context ou des bibliothèques comme Zustand pour gérer des données profondément imbriquées. Cette approche garde votre code plus propre et évite les rendus inutiles.

6} N'utilisez pas les index de tableau comme clés

L'utilisation d'index de tableau comme clés peut sembler inoffensive, mais elle peut provoquer des bugs subtils et des problèmes de performances, en particulier dans les listes où les éléments sont réorganisés ou supprimés.

// Not efficient
function ParentComponent() {
  return (
    <ChildComponent 
      styles={{ margin: '20px', padding: '10px' }}
      config={{ theme: 'dark', animate: true }}
    />
  );
}

// Smarter approach
const styles = { margin: '20px', padding: '10px' };
const config = { theme: 'dark', animate: true };

function ParentComponent() {
  return (
    <ChildComponent 
      styles={styles}
      config={config}
    />
  );
}
Copier après la connexion
Copier après la connexion

Utilisez toujours des identifiants stables et uniques comme clés. Cela aide React à suivre correctement vos composants, garantissant des mises à jour fluides et un maintien précis de l'état.

7} Arrêtez de transmettre des accessoires inutilisés

Le passage d'accessoires inutiles peut gonfler vos composants et déclencher des rendus évitables. Chaque accessoire supplémentaire ajoute à la surcharge, même s'il n'est pas utilisé dans le composant.

// Inefficient
function Parent() {
  const props = {
    name: 'John',
    age: 30,
    email: 'john@email.com',
    phone: '1234567890',
    address: '123 Street'
  };

  return <UserCard {...props} />;
}

// A better way
function Parent() {
  const props = {
    name: 'John',
    age: 30,
    email: 'john@email.com',
    phone: '1234567890',
    address: '123 Street'
  };

  return <UserCard name={props.name} email={props.email} />;
}
Copier après la connexion
Copier après la connexion

Refactorisez régulièrement vos composants et supprimez tous les accessoires qui ne sont pas essentiels. Un composant plus simple signifie moins de rendus et une application plus rapide.

8} Utilisez toujours les types d'accessoires appropriés

Ignorer les PropTypes ou TypeScript est une erreur courante qui peut entraîner des bugs et des erreurs d'exécution. Ces outils aident à détecter les problèmes liés aux accessoires pendant le développement, rendant votre application plus robuste et plus facile à déboguer.

// Not optimal
function TodoList() {
  const handleClick = (id) => {
    // handle click
  };

  return <TodoItem onClick={handleClick} />;
}

// Optimal approach
function TodoList() {
  const handleClick = useCallback((id) => {
    // handle click
  }, []); // Include dependencies if needed

  return <TodoItem onClick={handleClick} />;
}
Copier après la connexion
Copier après la connexion

L'utilisation de TypeScript ou de PropTypes vous aide non seulement à détecter les problèmes à un stade précoce, mais rend également vos composants plus prévisibles et maintenables.

9} Ne jamais muter les accessoires directement

Changer directement les accessoires va à l'encontre des principes d'immuabilité de React, entraînant souvent des bugs inattendus et des mises à jour manquées.

// Not ideal
function GrandParent({ user }) {
  return <Parent user={user} />;
}

function Parent({ user }) {
  return <Child user={user} />;
}

function Child({ user }) {
  return <span>{user.name}</span>;
}

// Smarter solution
function App() {
  const [user] = useState(userData);

  return (
    <UserContext.Provider value={user}>
      <GrandParent />
    </UserContext.Provider>
  );
}

function Child() {
  const user = useContext(UserContext);
  return <span>{user.name}</span>;
}
Copier après la connexion

Gardez les accessoires immuables en utilisant plutôt des fonctions ou des mises à jour d'état. Cela garantit que React peut suivre correctement les modifications et restituer les composants en cas de besoin.

Conclusion

Ces erreurs d'accessoires peuvent sembler minimes, mais elles s'accumulent pour créer de graves problèmes de performances au fil du temps. Pour que votre application React continue de fonctionner correctement :

  • Ne transmettez que les accessoires réellement nécessaires aux composants.
  • Utilisez useCallback pour mémoriser les fonctions et éviter les rendus inutiles.
  • Fiez-vous à des outils de gestion d'état comme Context ou Zustand au lieu de forer des accessoires.
  • Ne modifiez jamais les accessoires directement : travaillez toujours avec des mises à jour immuables.
  • Utilisez TypeScript ou PropTypes pour renforcer la sécurité des types et détecter les bogues plus tôt.

Des outils pour vous aider à optimiser :

  • Onglet Performances de React DevTools : identifier les goulots d'étranglement en matière de performances.
  • Pourquoi-avez-vous-rendu : Détectez automatiquement les rendus inutiles.
  • Plugin ESLint React Hooks : garantissez une utilisation correcte du hook.
  • TypeScript : ajoutez un typage statique pour une meilleure fiabilité.

Résolvez ces problèmes dès aujourd'hui et vous remarquerez que votre application est plus rapide, plus réactive et plus facile à maintenir.

Bon codage !!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal