Mixins Vue.js

Les mixins définissent une partie de méthodes réutilisables ou de propriétés calculées. Les objets mixin peuvent contenir n'importe quelles options de composant. Lorsqu'un composant utilise un objet mixin, toutes les options de l'objet mixin seront fusionnées dans les propres options du composant.

Prenons un exemple simple :

Exemple

var vm = new Vue({ el: '#databinding', data: { }, methods : { }, }); //Définir un objet mixin var myMixin = { created: function () { this.startmixin() }, methods: { startmixin: function () { document.write("Bienvenue dans l'exemple de Mixin"); } } }; var Component = Vue.extend({ mixins: [myMixin] }) var component = new Component();

Essayez-le vous-même »

Fusion des options

Lorsque le composant et l'objet mixin contiennent des options portant le même nom, ces options seront fusionnées de manière appropriée.

Par exemple, les objets data sont fusionnés superficiellement en interne (un niveau de profondeur de propriété), et lorsqu'ils entrent en conflit avec les données du composant, les données du composant sont prioritaires.

Dans l'exemple suivant, l'instance Vue et l'objet mixin contiennent les mêmes méthodes. D'après le résultat de sortie, nous pouvons voir que les deux options sont fusionnées.

Exemple

var mixin = { created: function () { document.write('Appel de mixin' + '<br>') } } new Vue({ mixins: [mixin], created: function () { document.write('Appel de composant' + '<br>') } });

Le résultat de sortie est:

Mixin call
Component call

Essayez-le vous-même »

S'il y a des noms de fonctions identiques dans l'option methods, l'instance Vue aura la priorité. Dans l'exemple suivant, l'instance Vue et les options methods de l'objet mixin contiennent les mêmes fonctions :

Exemple

var mixin = { methods: { hellworld: function () { document.write('méthode HelloWorld' + '<br>'); }, samemethod: function () { document.write('Mixin : même nom de méthode' + '<br>'); } } }; var vm = new Vue({ mixins: [mixin], methods: { start: function () { document.write('méthode start' + '<br>'); }, samemethod: function () { document.write('Main : même nom de méthode' + '<br>'); } } }); vm.hellworld(); vm.start(); vm.samemethod();

Le résultat de sortie est:

HelloWorld 方法
start 方法
Main:相同方法名

Essayez-le vous-même »

Dans l'exemple ci-dessus, nous avons appelé les trois méthodes suivantes :

vm.hellworld();
vm.start();
vm.samemethod();

D'après le résultat de sortie, si le même nom de fonction est rencontré dans l'option methods, l'instance Vue a une priorité plus élevée et exécutera la sortie.


Mixin global

Vous pouvez également enregistrer globalement un objet mixin. Notez l'utilisation ! Une fois qu'un objet mixin global est utilisé, il affectera toutes les instances Vue créées par la suite. Lorsqu'il est utilisé à bon escient, il peut injecter une logique de traitement pour des objets personnalisés.

Exemple

//Injectez un gestionnaire pour l'option personnalisée 'myOption'. Vue.mixin({ created: function () { var myOption = this.$options.myOption if (myOption) { console.log(myOption) } } }) new Vue({ myOption: 'hello!' }) // => "hello!"

Essayez-le vous-même »

Utilisez les objets de mixin globaux avec prudence, car ils affectent chaque instance Vue créée individuellement (y compris les modèles tiers).

Autres extensions