3
votes

Fonction dans Mixins Vuejs introuvable

Bonjour j'ai un composant:

methods: {
    fileChanged: function(file){}
}

Et puis mon Mixin:

export default {
  data () {

  },
  methods: {
    fileChanged(file){
      if(file){
        this.itemImage = file;
        this.previewImage = URL.createObjectURL(file);
      }
    }
  }
}

Le problème c'est qu'il renvoie cette erreur comme les mixins not est inclus, mais est importé.

vue.runtime.esm.js? 2b0e: 1878 TypeError: this.fileChanged n'est pas un fonction

J'ai aussi essayé de changer mon mixin avec:

<template>
 <upload-btn 
   color="black" 
   title="Carica foto" 
   :fileChangedCallback="fileChange" />
</template>
<script>
import  fileUploadMixin from './../mixins/fileUploadMixin';
export default {
  name: 'compoment',
  mixins: [fileUploadMixin],
  components:{
    'upload-btn': UploadButton
  },
  data(){..},
  methods: {
    fileChange(file){
      this.fileChanged(file);
    }
   }
</script>

mais cela ne fonctionne pas.

Ce qui ne va pas ?


3 commentaires

Syntactc semble correct, mon doute est dans la déclaration d'importation. Pouvez-vous vous assurer que cela résout le mixin?


en fait oui, j'utilise vue-cli-serve, si mixin n'a pas été résolu, il renvoie une erreur lors de la compilation. J'essaye de changer l'extension de mixin, j'ai mis .vue et mettre .js semble retourner une erreur différente!


oui le problème était que je me trompais sur l'extension de ma classe. Je vous remercie


3 Réponses :


0
votes

Essayez de supprimer le bloc de données de votre mixin ou d'en renvoyer un objet vide.


1 commentaires

Ce n'est pas nécessaire. D'après ma compréhension, ces blocs de données sont fusionnés



0
votes

Le Mixin doit être calculé:

export default {
    data () {},
    computed: {
         fileChanged(file){
              if(file){
                   this.itemImage = file;
                   this.previewImage  = URL.createObjectURL(file);
              }
          }
      }
 }


1 commentaires

renvoie cette erreur: La propriété ou la méthode "fileChanged" n'est pas définie sur l'instance mais référencée lors du rendu. Assurez-vous que cette propriété est réactive



2
votes

Pour les autres développeurs.

J'ai résolu.

Le problème était que mon extension de fichier Mixins était incorrecte.

J'ai mis Mixin.vue au lieu de Mixin.js , merci à tous pour les réponses.


0 commentaires