Экземпляр компонента
Информация
На этой странице описаны встроенные свойства и методы, открытые для публичного экземпляра компонента, т. е. this
.
Все свойства, перечисленные на этой странице, доступны для чтения (за исключением вложенных свойств в $data
).
$data
Объект, возвращаемый из свойства data
, на который реагирует компонент. Экземпляр компонента проксирует доступ к свойствам своего объекта данных.
Тип
tsinterface ComponentPublicInstance { $data: object }
$props
Объект, представляющий текущий, разрешённый параметр компонента.
Тип
tsinterface ComponentPublicInstance { $props: object }
Подробности
Будут включены только параметры, объявленные с помощью свойства
props
. Экземпляр компонента проксирует доступ к свойствам на своем объектеprops
.
$el
Корневой узел DOM, которым управляет экземпляр компонента.
Тип
tsinterface ComponentPublicInstance { $el: any }
Подробности
$el
будетнеопределённым
(undefined
) до тех пор, пока компонент не будет смонтирован.- Для компонентов с одним корневым элементом
$el
будет указывать на этот элемент. - Для компонентов с корневым текстовым узлом,
$el
будет указывать на текстовый узел. - Для компонентов с несколькими корневыми узлами
$el
будет узлом-заполнителем DOM, который Vue использует для отслеживания позиции компонента в DOM (текстовый узел или узел комментария в режиме гидратации SSR).
Совет
Для согласованности рекомендуется использовать ссылки на элементы шаблона для прямого доступа к элементам, а не полагаться на
$el
.- Для компонентов с одним корневым элементом
$options
Разрешённые параметры компонента, используемые для инстанцирования текущего экземпляра компонента.
Тип
tsinterface ComponentPublicInstance { $options: ComponentOptions }
Подробности
Объект
$options
отображает разрешённые опции для текущего компонента и является результатом слияния всех возможных источников:- Глобальные примеси
- Компонент,
расширяющий
(extends
) базовый - Примеси компонента
Обычно он используется для поддержки пользовательских опций компонентов:
jsconst app = createApp({ customOption: 'foo', created() { console.log(this.$options.customOption) // => 'foo' } })
Смотрите также
app.config.optionMergeStrategies
$parent
Родительский экземпляр, если у текущего экземпляра он есть. Для самого корневого экземпляра это будет null
.
Тип
tsinterface ComponentPublicInstance { $parent: ComponentPublicInstance | null }
$root
Экземпляр корневого компонента текущего дерева компонентов. Если у текущего экземпляра нет родителей, это значение будет равно самому себе.
Тип
tsinterface ComponentPublicInstance { $root: ComponentPublicInstance }
$slots
Объект, представляющий слоты, переданные родительским компонентом.
Тип
tsinterface ComponentPublicInstance { $slots: { [name: string]: Slot } } type Slot = (...args: any[]) => VNode[]
Подробности
Обычно используется при ручном создании рендер-функций, но также может использоваться для определения наличия слота.
Каждый слот отображается на
this.$slots
в виде функции, которая возвращает массив виртуальных узлов под ключом, соответствующим имени слота. Слот по умолчанию отображается какthis.$slots.default
.Если слот является слотом с ограниченной областью видимости, то аргументы, переданные в функции слота, доступны слоту как его параметры.
Смотрите также Рендер-функции - Отрисовка слотов
$refs
Объект элементов DOM и экземпляров компонентов, зарегистрированных через ссылки на элементы шаблона.
Тип
tsinterface ComponentPublicInstance { $refs: { [name: string]: Element | ComponentPublicInstance | null } }
Смотрите также
$attrs
Объект, содержащий передаваемые атрибуты компонента.
Тип
tsinterface ComponentPublicInstance { $attrs: object }
Подробности
Передаваемые атрибуты это атрибуты и обработчики событий, переданные родительским компонентом, но не объявленные дочерним компонентом в качестве свойства или события.
По умолчанию всё, что содержится в
$attrs
, будет автоматически наследоваться корневым элементом компонента, если корневой элемент только один. Это поведение отключается, если компонент имеет несколько корневых узлов, и может быть явно отключено с помощью опцииinheritAttrs
.Смотрите также
$watch()
Императивный API для создания наблюдателей.
Тип
tsinterface ComponentPublicInstance { $watch( source: string | (() => any), callback: WatchCallback, options?: WatchOptions ): StopHandle } type WatchCallback<T> = ( value: T, oldValue: T, onCleanup: (cleanupFn: () => void) => void ) => void interface WatchOptions { immediate?: boolean // по умолчанию: false deep?: boolean // по умолчанию: false flush?: 'pre' | 'post' | 'sync' // по умолчанию: 'pre' onTrack?: (event: DebuggerEvent) => void onTrigger?: (event: DebuggerEvent) => void } type StopHandle = () => void
Подробности
Первый аргумент — это
source
. Это может быть строка имени свойства компонента, простая строка пути, разделённая точками, или функция-геттер.Второй аргумент — функция обратного вызова. Обратный вызов получает новое значение и старое значение наблюдаемого источника.
immediate
: запуск обратного вызова непосредственно при создании наблюдателя. При первом вызове старое значение будетundefined
.deep
: принудительный глубокий обход источника, если он является объектом, чтобы обратный вызов срабатывал при глубоких мутациях. Смотрите главу Глубокие наблюдатели.flush
: регулировка времени сброса обратного вызова. См. Время сброса обратного вызова иwatchEffect()
.onTrack / onTrigger
: отладка зависимостей наблюдателя. См. раздел Отладка наблюдателей.
Пример
Следим за именем свойства:
jsthis.$watch('a', (newVal, oldVal) => {})
Следим за путём, использующим точку:
jsthis.$watch('a.b', (newVal, oldVal) => {})
Использование метода получения для более сложных выражений:
jsthis.$watch( // Каждый раз, когда выражение `this.a + this.b` дает // другой результат, будет вызываться обработчик. // Это как если бы мы наблюдали за вычисляемым свойством, // не определяя само вычисляемое свойство. () => this.a + this.b, (newVal, oldVal) => {} )
Остановка наблюдателя:
jsconst unwatch = this.$watch('a', cb) // позже... unwatch()
Смотрите также
$emit()
Запуск пользовательского события на текущем экземпляре. Любые дополнительные аргументы будут переданы в функцию обратного вызова слушателя.
Тип
tsinterface ComponentPublicInstance { $emit(event: string, ...args: any[]): void }
Пример
jsexport default { created() { // только событие this.$emit('foo') // с дополнительными аргументами this.$emit('bar', 1, 2, 3) } }
Смотрите также
$forceUpdate()
Принудительное повторное отображение экземпляра компонента.
Тип
tsinterface ComponentPublicInstance { $forceUpdate(): void }
Подробности
Это нужно делать крайне редко, учитывая полностью автоматическую систему реактивности Vue. Единственный случай, когда он может понадобиться, — это когда вы явно создали нереактивное состояние компонента с помощью расширенных Reactivity API.
$nextTick()
Привязанная к экземпляру версия глобального nextTick()
.
Тип
tsinterface ComponentPublicInstance { $nextTick( callback?: (this: ComponentPublicInstance) => void ): Promise<void> }
Подробности
Единственное отличие от глобальной версии
nextTick()
заключается в том, что обратный вызов, переданный вthis.$nextTick()
, будет иметь контекстthis
, привязанный к текущему экземпляру компонента.Смотрите также
nextTick()