Propiedad extends de Vue3
En Vue3,extendsla propiedad es una característica muy útil que te permite heredar y extender componentes existentes.
Mediante el uso deextends, puedes reutilizar y personalizar la lógica de los componentes existentes sin tener que reescribir código.
Escenarios de uso
extendsLa propiedad normalmente se usa en los siguientes escenarios:
- Reutilizar la lógica de componentes: cuando tienes un componente base y otros componentes necesitan heredar su lógica.
- Personalizar el comportamiento de componentes: cuando necesitas personalizar o anular ciertos comportamientos sobre la base de la herencia.
- Construir componentes configurables: mediante la herencia y la extensión, construir componentes más flexibles y configurables.
Sintaxis básica
Ejemplo
export default {
extends: BaseComponent,
// Aquí se pueden añadir nuevas opciones o sobrescribir opciones existentes
};
En el código anterior, a través deextendsla propiedad heredóBaseComponentcomponente. Después, puedes añadir nuevas opciones a este componente, o sobrescribirBaseComponentlas opciones existentes en
Ejemplo
1. Componente base
Primero, definimos un componente baseBaseComponent.vue:
Ejemplo
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello from BaseComponent!'
};
}
};
</script>
2. Componente que hereda
A continuación, creamos un nuevo componenteExtendedComponent.vue, que hereda deBaseComponent, y sobrescribemessagelos datos:
Ejemplo
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
import BaseComponent from './BaseComponent.vue';
export default {
extends: BaseComponent,
data() {
return {
message: 'Hello from ExtendedComponent!'
};
}
};
</script>
En este ejemplo,ExtendedComponentheredaBaseComponenttoda la lógica de, pero sobrescribemessagelos datos.Hello from ExtendedComponent!。
Consideraciones
Fusión de opciones: cuando se usa
extendsla propiedad, Vue realiza la fusión de opciones. Paradata、methodslas opciones de tipo objeto, Vue realiza una fusión superficial. Si hay propiedades con el mismo nombre, las propiedades del componente hijo sobrescriben las del componente padre.Ganchos del ciclo de vida: si el componente hijo y el componente padre definen el mismo gancho del ciclo de vida, ambas funciones de gancho serán invocadas, y la función de gancho del componente padre se ejecutará antes que la del componente hijo.
Sobrescritura de plantilla:
extendsLa propiedad solo hereda la parte lógica, la parte de la plantilla no se hereda. Si necesitas heredar la plantilla, puedes considerar usarslotsomixins。
Otras extensiones
API de Opciones de Vue3