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 Réponses :
Essayez de supprimer le bloc de données de votre mixin ou d'en renvoyer un objet vide.
Ce n'est pas nécessaire. D'après ma compréhension, ces blocs de données sont fusionnés
Le Mixin doit être calculé:
export default { data () {}, computed: { fileChanged(file){ if(file){ this.itemImage = file; this.previewImage = URL.createObjectURL(file); } } } }
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
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.
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