Options: Разное
name
Явно объявляем отображаемое имя компонента.
Тип
tsinterface ComponentOptions { name?: string }
Подробности
Имя компонента используется для следующих целей:
- Рекурсивные ссылки на себя в собственном шаблоне компонента
- Отображение в дереве проверки компонентов Vue DevTools
- Отображение в следах компонентов предупреждения
При использовании однофайловых компонентов компонент уже сам определяет свое имя на основе имени файла. Например, файл с именем
MyComponent.vue
будет иметь предполагаемое отображаемое имя «MyComponent».Другой случай — когда компонент регистрируется глобально с помощью
app.component
, глобальный ID автоматически устанавливается в качестве его имени.Опция
name
позволяет вам переопределить выведенное имя или явно указать имя, когда оно не может быть выведено (например, если не используются инструменты сборки, или встроенный компонент, не относящийся к SFC).Есть один случай, когда
name
явно необходимо: при сопоставлении с кэшируемыми компонентами в<KeepAlive>
через его параметрыinclude / exclude
.Примечание
Начиная с версии 3.2.34, однофайловый компонент, использующий
<script setup>
, будет автоматически определять опциюname
на основе имени файла, устраняя необходимость вручную объявлять имя даже при использовании с<KeepAlive>
.
inheritAttrs
Контролирует, будет ли включено стандартное поведение передачи атрибутов компонента.
Тип
tsinterface ComponentOptions { inheritAttrs?: boolean // по умолчанию: true }
Подробности
По умолчанию привязки атрибутов родительской области видимости, которые не распознаются как параметры, будут «выпадать». Это означает, что когда у нас есть компонент с одним корневым узлом, эти привязки будут применяться к корневому элементу дочернего компонента как обычные HTML-атрибуты. При создании компонента, который оборачивает целевой элемент или другой компонент, это не всегда может быть желаемым поведением. Установив
inheritAttrs
вfalse
, можно отключить это поведение по умолчанию. Атрибуты доступны через свойство экземпляра$attrs
и могут быть явно привязаны к некорневому элементу с помощьюv-bind
.Пример
При объявлении этой опции в компоненте, использующем
<script setup>
, вы можете использовать макросdefineOptions
: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>
Смотрите также
components
Объект, регистрирующий компоненты, которые будут доступны экземпляру компонента.
Тип
tsinterface ComponentOptions { components?: { [key: string]: Component } }
Пример
jsimport Foo from './Foo.vue' import Bar from './Bar.vue' export default { components: { // короткая запись Foo, // регистрация под другим именем RenamedBar: Bar } }
Смотрите также Регистрация компонентов
directives
Объект, регистрирующий директивы, которые должны быть доступны экземпляру компонента.
Тип
tsinterface ComponentOptions { directives?: { [key: string]: Directive } }
Пример
jsexport default { directives: { // включение v-focus в шаблоне focus: { mounted(el) { el.focus() } } } }
template<input v-focus>
Смотрите также Пользовательские директивы