Options: Miscelánea
name
Declara explícitamente un nombre de visualización para el componente.
Tipo
tsinterface ComponentOptions { name?: string }Detalles
El nombre de un componente se utiliza para lo siguiente:
- Autorreferencia recursiva en el propio template del componente
- Visualización en el árbol de inspección de componentes de Vue DevTools
- Visualización en trazas de advertencia de componentes
Cuando usas Componentes de Archivo Único (SFC), el componente ya infiere su propio nombre a partir del nombre del archivo. Por ejemplo, un archivo llamado
MyComponent.vuetendrá el nombre de visualización inferido "MyComponent".Otro caso es que cuando un componente se registra globalmente con
app.component, el ID global se establece automáticamente como su nombre.La opción
namete permite anular el nombre inferido, o proporcionar explícitamente un nombre cuando no se puede inferir ninguno (por ejemplo, cuando no se utilizan herramientas de construcción, o un componente en línea que no es SFC).Hay un caso en el que
namees explícitamente necesario: al hacer coincidir componentes cacheables en<KeepAlive>a través de suspropsinclude / exclude.TIP
Desde la versión 3.2.34, un componente de archivo único que utiliza
<script setup>inferirá automáticamente su opciónnamebasándose en el nombre del archivo, eliminando la necesidad de declarar manualmente el nombre incluso cuando se usa con<KeepAlive>.
inheritAttrs
Controla si el comportamiento predeterminado de traspaso de atributos del componente debe estar habilitado.
Tipo
tsinterface ComponentOptions { inheritAttrs?: boolean // default: true }Detalles
Por defecto, los enlaces de atributos del ámbito padre que no se reconocen como
propsse "traspasarán". Esto significa que cuando tenemos un componente de raíz única, estos enlaces se aplicarán al elemento raíz del componente hijo como atributos HTML normales. Al crear un componente que envuelve un elemento objetivo u otro componente, esto no siempre es el comportamiento deseado. Al establecerinheritAttrsenfalse, este comportamiento predeterminado puede deshabilitarse. Los atributos están disponibles a través de la propiedad de instancia$attrsy se pueden vincular explícitamente a un elemento no raíz utilizandov-bind.Ejemplo
Al declarar esta opción en un componente que utiliza
<script setup>, puedes usar la macrodefineOptions:vue<script setup> defineProps(['label', 'value']) defineEmits(['input']) defineOptions({ inheritAttrs: false }) </script> <template> <label> {{ label }} <input v-bind="$attrs" v-bind:value="value" v-on:input="$emit('input', $event.target.value)" /> </label> </template>Ver también
components
Un objeto que registra componentes para que estén disponibles en la instancia del componente.
Tipo
tsinterface ComponentOptions { components?: { [key: string]: Component } }Ejemplo
jsimport Foo from './Foo.vue' import Bar from './Bar.vue' export default { components: { // abreviatura Foo, // registrar bajo un nombre diferente RenamedBar: Bar } }Ver también Registro de Componentes
directives
Un objeto que registra directivas para que estén disponibles en la instancia del componente.
Tipo
tsinterface ComponentOptions { directives?: { [key: string]: Directive } }Ejemplo
jsexport default { directives: { // habilita v-focus en el template focus: { mounted(el) { el.focus() } } } }template<input v-focus>Ver también Directivas Personalizadas