React est une bibliothèque JavaScript populaire pour la construction d’interfaces utilisateur, largement utilisée par les développeurs du monde entier. Elle simplifie le processus de construction d’interfaces utilisateur complexes en fournissant des composants réutilisables et une gestion des états.

Que vous utilisiez React en tant que débutant ou développeur expérimenté, il n’est pas rare de voir des messages d’erreur tels que « Objects Are Not Valid as a React Child ».

Dans cet article, nous allons explorer les causes de cette erreur et fournir des solutions que vous pouvez utiliser pour la corriger.

Quelles sont les causes de l’erreur « Objects Are Not Valid as a React Child » ?

L’erreur « Objects Are Not Valid as a React Child » est une erreur courante dans la programmation React. Elle se produit lorsqu’un composant reçoit un objet comme enfant au lieu d’un élément React valide. Le message d’erreur ressemble généralement à ceci :

Erreur « Objects Are Not Valid as a React Child »
Erreur « Objects Are Not Valid as a React Child »

Le message d’erreur indique que le composant a reçu un objet au lieu d’un élément enfant React valide (comme des chaînes de caractères, des nombres ou des éléments React, mais pas des tableaux ou des objets). La cause principale de cette erreur est le passage d’un type de données non valide et de données non sérialisables en tant qu’élément enfant.

1. Passer un objet en tant qu’élément enfant

export default function App() {
  return (
    <div>
      {{ message: "Hello world!" }}
    </div>
  );
}

Dans cet exemple, le composant App tente de rendre un objet en tant qu’élément enfant. Cela déclenchera l’erreur « Objects Are Not Valid as a React Child », car React ne reconnaît pas les objets comme des éléments enfants valides.

2. Transmettre des données non sérialisables en tant qu’élément enfant

export default function App() {
  const message = { text: "Hello world!" };
  return (
    <div>
      {message}
    </div>
  );
}

Dans le code ci-dessus, le composant App tente de rendre un type de données non sérialisable (un objet) en tant qu’élément enfant. Cela déclenche l’erreur « Objects Are Not Valid as a React Child », car React exige que tous les éléments enfants soient sérialisables.

3. Passer un tableau comme élément enfant

export default function App() {
    const students = [
        { name: 'John Doe', age: 12 },
        { name: 'Jane Doe', age: 14 },
    ];
    const locale = {
        state: 'Florida',
        country: 'USA',
    };
    return (
        <>
            <span>{students}</span>
            <div>{locale}</div>
        </>
    );
}

Dans ce code, nous avons un tableau students et un objet locale que nous essayons de rendre comme enfants. Cependant, passer un tableau ou un objet comme enfant n’est pas valide dans React – ce code déclenchera l’erreur « Objects Are Not Valid as a React Child ».

Comment corriger l’erreur « Objects Are Not Valid as a React Child » ?

Pour corriger cette erreur, il est important de se rappeler que les tableaux et les objets sont itérables en JavaScript. JavaScript considère les tableaux comme un type d’objet spécial, c’est pourquoi le message d’erreur indiquera toujours « Objects Are Not Valid as a React Child » même si le problème concerne un tableau.

Pour accéder aux données d’un tableau ou d’un objet, vous pouvez itérer dans le tableau à l’aide d’une boucle, accéder à des éléments spécifiques en utilisant leur numéro d’index ou utiliser la notation par points pour les objets.

Voici quelques-unes des solutions les plus courantes :

1. Conversion d’objets en chaînes de caractères ou en nombres

Une façon de corriger l’erreur consiste à convertir l’objet en chaîne de caractères ou en nombre avant de le transmettre en tant que fils. Par exemple, vous pouvez convertir l’objet en chaîne ou en nombre avant de le passer en tant que fils :

export default function App() {
  const message = { text: "Hello world!" };
  return (
    <div>
      {JSON.stringify(message)}
    </div>
  );
}

Dans cet exemple, nous convertissons l’objet message en chaîne de caractères à l’aide de la méthode JSON.stringify() avant de le passer en tant qu’élément enfant. Cela empêchera l’erreur « Objects Are Not Valid as a React Child » de se produire.

2. Rendre correctement les tableaux avec la méthode map()

Une autre cause fréquente de l’erreur est l’utilisation incorrecte des tableaux dans React. Si vous essayez de rendre un tableau directement en tant qu’élément enfant, vous déclencherez l’erreur « Objects Are Not Valid as a React Child ».

Vous devez plutôt utiliser la méthode map() pour convertir chaque élément du tableau en un élément enfant React valide.

export default function App() {
    const students = [
        { name: 'John Doe', age: 12 },
        { name: 'Jane Doe', age: 14 },
    ];
    const locale = {
        state: 'Florida',
        country: 'USA',
    };
    return (
        <>
            {students.map((student, index) => (
                <div key={index}>
                    <span>{student.name}</span>
                    <span>{student.age}</span>
                </div>
            ))}
            <div>
                {locale.state}, {locale.country}
            </div>
        </>
    );
}

Dans ce code, nous utilisons la méthode map() pour parcourir le tableau students et convertir chaque élément en un élément div contenant le nom et l’âge de l’élève. Nous ajoutons également une clé à chaque élément enfant pour optimiser les performances de rendu.

3. Utilisation du rendu conditionnel pour éviter le rendu de types de données non valides

Si vous transmettez des données qui pourraient ne pas être valides en tant qu’enfant React, vous pouvez utiliser le rendu conditionnel pour éviter que l’erreur ne se produise.

function App() {
  const message = { text: "Hello world!" };
  return (
    <div>
      {typeof message === 'string' ? message : null}
    </div>
  );
}

Dans cet exemple, nous utilisons le rendu conditionnel uniquement pour rendre le message s’il s’agit d’une chaîne de caractères. Cela empêchera l’erreur « Objects Are Not Valid as a React Child » de se produire.

Bonnes pratiques pour éviter l’erreur « Objects Are Not Valid as a React Child »

Pour éviter que l’erreur « Objects Are Not Valid as a React Child » ne se produise, il est important de suivre les meilleures pratiques lors de la construction des composants React. Voici quelques-unes des meilleures pratiques les plus importantes :

  • Passez toujours des éléments React child valides en tant qu’enfants
  • Évitez de transmettre des données non sérialisables en tant qu’éléments enfants
  • Utilisez le rendu conditionnel pour gérer les cas limites et les types de données non valides

Résumé

Dans cet article, nous avons appris comment résoudre l’erreur « Objects Are Not Valid as a React Child » dans tous les scénarios possibles et les meilleures pratiques pour éviter que l’erreur ne se produise.

Il est important de se rappeler que les tableaux sont considérés comme un type spécial d’objet, donc lorsque vous ne parvenez pas à boucler un tableau avant de le rendre dans votre application React, l’erreur « Objects Are Not Valid as a React Child » se produira.

Si vous avez une application React que vous souhaitez partager avec le monde entier, découvrez le service d’hébergement d’applications de Kinsta. Vous pouvez commencer gratuitement.

Partagez votre expérience ! Avez-vous déjà rencontré ce problème ? Si oui, comment l’avez-vous résolu ? Avez-vous utilisé d’autres méthodes que celles décrites dans cet article ? Faites-le nous savoir dans les commentaires.