Vue3 : mixins
Les mixins définissent une partie des méthodes réutilisables ou des propriétés calculées. Un objet mixin peut contenir n'importe quelles options de composant. Lorsqu'un composant utilise l'objet mixin, toutes les options de l'objet mixin seront fusionnées dans les options propres du composant.
Prenons un exemple simple :
Exemple
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 de données sont fusionnés superficiellement en interne (un niveau de profondeur de propriété), et en cas de conflit avec les données du composant, les données du composant ont la priorité.
Dans l'exemple suivant, l'instance Vue et l'objet mixin contiennent la même méthode. D'après le résultat de sortie, nous pouvons voir que les deux options sont fusionnées.
Exemple
Le résultat de sortie est:
{"message":"goodbye","foo":"example","bar":"def"}
Essayez-le vous-même »
Les fonctions de hook portant le même nom seront fusionnées dans un tableau, de sorte que toutes seront appelées. De plus, les hooks de l'objet mixin seront appelés avant les hooks propres au composant.
const myMixin = {
created() {
console.log('mixin 对象的钩子被调用')
}
}
const app = Vue.createApp({
mixins: [myMixin],
created() {
console.log('组件钩子被调用')
}
})
// => "mixin 对象的钩子被调用"
// => "组件钩子被调用"Les options dont les valeurs sont des objets, telles que methods, components et directives, seront fusionnées dans le même objet. Lorsque deux noms de clés d'objet entrent en conflit, la paire clé-valeur de l'objet du composant est retenue.
Exemple
Dans l'exemple ci-dessus, nous avons appelé les trois méthodes suivantes :
vm.foo(); vm.bar(); vm.conflicting();
D'après le résultat de sortie, dans l'option methods, si le même nom de fonction est rencontré, l'instance Vue a une priorité plus élevée et sa sortie sera exécutée.
Mixin global
Vous pouvez également enregistrer un objet mixin globalement. Soyez prudent lorsque vous l'utilisez ! Une fois qu'un objet mixin global est utilisé, il affectera toutes les instances Vue créées par la suite. Lorsqu'il est utilisé correctement, il peut injecter une logique de traitement pour des objets personnalisés.
Exemple
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