Did you register the component correctly? : comment corriger cette erreur dans Vue.js ?

Le framework Vue.js est un framework JavaScript très utilisé. Il permet de créer des composants pour agencer l'interface de son application, tout en laissant un grand choix aux développeurs pour les technologies utilisées. Ce système de composants constitue le cœur du framework. On crée nos propres composants que l'on importe ensuite dans notre application. Si vous rencontrez le message d'erreur "Did you register the component correctly?", il existe plusieurs causes possibles.

La première chose à vérifier est vos directives d'import et d'export. Pour chaque composant, vous devez utiliser le même nom dans le nom du composant ainsi que dans la directive "import" quand vous l'importez dans votre code. Le nom se déclare dans la propriété "name" lors de l'export. Vous devez également faire attention aux types d'import à utiliser. Si votre fichier ne contient qu'un composant, alors vous devez utiliser un export par défaut. S'il y en a plusieurs, alors vous devez utiliser un export nommé.

//Export d'un composant du fichier "composant.js"
export default{
name:"MonComposant",
    data(){
      return {msg: 'hello world'}
    }
}
//Import du composant
Import MonComposant from composant

Il existe un autre cas particulier qui peut engendrer le message d'erreur. Il s'agit d'un cas où un composant de la même classe est à la fois le parent et l'enfant du composant dans lequel on se trouve. Voici un exemple de hiérarchie avec ce cas :


  
    
       

Dans le composant "mon-autre-composant", un composant de classe "mon-composant" est à la fois parent et enfant. Cela crée une boucle qui aboutit à ce message d'erreur. Pour le résoudre, vous pouvez déclarer globalement le composant dans votre application avec la fonction "vue.component". Vous pouvez également importer le composant appelé 2 fois avec la fonction "require" en l'appelant dans l'évènement "beforeCreate", définissant une fonction exécutée avant la création du composant. La dernière solution consiste à utiliser une fonction simple qui va importer le composant. Dans les deux derniers cas, c'est à la fois les codes du parent et de l'enfant qui doivent être modifiés.

//Déclaration globale
vue.component("MonComposant", MonComposant)
//Avec la fonction "beforeCreate"
beforeCreate: function () {
  this.$options.components.MonComposant = require('./ MonComposant.vue').default
}
//Avec une fonction simple
components: {
  MonComposant: () => import('./MonComposant.vue')
}

JavaScript