Vue3 Mixins
Los mixins definen una serie de métodos reutilizables o propiedades computadas. Un objeto mixin puede contener cualquier opción de componente. Cuando un componente utiliza un objeto mixin, todas las opciones del objeto mixin se combinarán con las opciones del propio componente.
Veamos un ejemplo sencillo:
Ejemplo
Pruébalo »
Combinación de opciones
Cuando el componente y el objeto mixin contienen opciones con el mismo nombre, estas opciones se mezclarán de manera adecuada.
Por ejemplo, los objetos de datos se fusionan superficialmente a nivel interno (una capa de profundidad de propiedades), y en caso de conflicto con los datos del componente, los datos del componente tienen prioridad.
En el siguiente ejemplo, la instancia de Vue y el objeto mixin contienen el mismo método. En la salida se puede ver que las dos opciones se han combinado.
Ejemplo
El resultado de salida es:
{"message":"goodbye","foo":"ejemplo","bar":"def"}
Pruébalo »
Las funciones hook con el mismo nombre se combinarán en un array, por lo que todas serán llamadas. Además, los hooks del objeto mixin se llamarán antes que los hooks del propio componente.
const myMixin = {
created() {
console.log('mixin 对象的钩子被调用')
}
}
const app = Vue.createApp({
mixins: [myMixin],
created() {
console.log('组件钩子被调用')
}
})
// => "mixin 对象的钩子被调用"
// => "组件钩子被调用"Las opciones cuyo valor es un objeto, como methods, components y directives, se combinarán en el mismo objeto. Cuando las claves de dos objetos entren en conflicto, se tomarán los pares clave-valor del componente.
Ejemplo
En el ejemplo anterior, llamamos a los siguientes tres métodos:
vm.foo(); vm.bar(); vm.conflicting();
Según el resultado de salida, si en la opción methods se encuentra el mismo nombre de función, la instancia de Vue tiene mayor prioridad y ejecutará su salida.
Mixins globales
También se puede registrar el objeto mixin globalmente. ¡Cuidado con su uso! Una vez que se utiliza un objeto mixin global, afectará a todas las instancias de Vue creadas posteriormente. Cuando se usa adecuadamente, se puede inyectar lógica de procesamiento para objetos personalizados.
Ejemplo
Pruébalo »
Usa los objetos mixin globales con precaución, porque afectarán a cada instancia de Vue creada individualmente (incluidas las plantillas de terceros).
Otras extensiones