Instance komponenty
Poznámka
Tato stránka dokumentuje vestavěné vlastnosti a metody, které jsou přístupné na veřejné instanci komponenty, tj. this
.
Všechny vlastnosti uvedené na této stránce jsou pouze pro čtení (kromě vnořených vlastností v $data
).
$data
Objekt vrácený ze sekce data
, který komponenta činí reaktivní. Instance komponenty zajišťuje proxy přístup k vlastnostem na svém objektu data.
Typ
tsinterface ComponentPublicInstance { $data: object }
$props
Objekt představující aktuální, vyřešené vlastnosti (props) komponenty.
Typ
tsinterface ComponentPublicInstance { $props: object }
Podrobnosti
Budou zahrnuty pouze vlastnosti deklarované pomocí možnosti
props
. Instance komponenty zajišťuje proxy přístup k vlastnostem na svém objektu props.
$el
Root DOM element, který instance komponenty spravuje.
Typ
tsinterface ComponentPublicInstance { $el: Node | undefined }
Podrobnosti
$el
budeundefined
až do doby, než je komponenta připojena (mounted).- Pro komponenty s jedním root elementem bude
$el
odkazovat na tento element. - Pro komponenty s textovým rootem bude
$el
odkazovat na textový element. - Pro komponenty s více root elementy bude
$el
představovat zástupný DOM element, který Vue používá k udržování pozice komponenty v DOM (textový element nebo komentářový element v režimu SSR hydratace).
TIP
Pro konzistenci se pro přímý přístup k elementům doporučuje používat template refs místo spoléhání na
$el
.- Pro komponenty s jedním root elementem bude
$options
Vyřešené možnosti (options) komponenty použité pro vytvoření aktuální instance komponenty.
Typ
tsinterface ComponentPublicInstance { $options: ComponentOptions }
Podrobnosti
Objekt
$options
poskytuje vyřešené možnosti pro aktuální komponentu a je výsledkem sloučení těchto možných zdrojů:- Globální mixins
- Základ
extends
komponenty - Mixins komponenty
Obvykle se používá k podpoře custom options komponent:
jsconst app = createApp({ customOption: 'foo', created() { console.log(this.$options.customOption) // => 'foo' } })
Viz také:
app.config.optionMergeStrategies
$parent
Instance rodičovské komponenty, pokud ji aktuální instance má. Pro root instanci bude hodnota null
.
Typ
tsinterface ComponentPublicInstance { $parent: ComponentPublicInstance | null }
$root
Instance root komponenty aktuálního stromu komponent. Pokud aktuální instance nemá rodiče, bude v této hodnota odkazovat na sebe sama.
Typ
tsinterface ComponentPublicInstance { $root: ComponentPublicInstance }
$slots
Objekt představující sloty (slots), které předala komponenta rodiče.
Typ
tsinterface ComponentPublicInstance { $slots: { [name: string]: Slot } } type Slot = (...args: any[]) => VNode[]
Podrobnosti
Obvykle se používá při ručním vytváření funkcí pro vykreslení, ale může se také použít k detekci přítomnosti slotu.
Každý slot je vystaven na
this.$slots
jako funkce, která vrací pole VNodes pod klíčem odpovídajícím názvu slotu. Výchozí slot je přístupný jakothis.$slots.default
.Pokud je to scoped slot, jsou parametry předané do slotových funkcí dostupné jako slot props.
$refs
Objekt DOM elementů a instancí komponent, registrovaných pomocí template refs.
Typ
tsinterface ComponentPublicInstance { $refs: { [name: string]: Element | ComponentPublicInstance | null } }
Viz také:
$attrs
Objekt obsahující atributy komponentu, které se předávají dále (fallthrough atributy).
Typ
tsinterface ComponentPublicInstance { $attrs: object }
Podrobnosti
Fallthrough atributy jsou atributy a event handlery předávané rodičovskou komponentou, které nejsou v potomkovi deklarovány jako vlastnosti (props) nebo emitované události (emits).
Ve výchozím nastavení se všechny atributy v
$attrs
automaticky zdědí na root elementu komponenty, pokud je root element pouze jeden. Toto chování je vypnuto, pokud má komponenta více root elementů, a může být explicitně zakázáno pomocí volbyinheritAttrs
.Viz také:
$watch()
Imperativní API pro vytváření watcherů.
Typ
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 // výchozí: false deep?: boolean // výchozí: false flush?: 'pre' | 'post' | 'sync' // výchozí: 'pre' onTrack?: (event: DebuggerEvent) => void onTrigger?: (event: DebuggerEvent) => void } type StopHandle = () => void
Podrobnosti
Prvním parametrem je zdroj watcheru. Může to být název vlastnosti komponenty jako řetězec, jednoduchý řetězec oddělený tečkami nebo getter funkce.
Druhým parametrem je callback funkce. Callback dostává novou a starou hodnotu sledovaného zdroje.
immediate
: spustit callback při okamžitě vytvoření watcheru. Stará hodnota bude při prvním voláníundefined
.deep
: vynutit hluboký (deep) průchod zdrojem, pokud je to objekt, aby se callback spustil při vnořených změnách. Viz Deep Watchers.flush
: upravit časování vyvolání callbacku. Viz Časování provedení callback funkce awatchEffect()
.onTrack / onTrigger
: ladit závislosti watcheru. Viz Ladění watcherů.
Příklad
Sledování názvu vlastnosti:
jsthis.$watch('a', (newVal, oldVal) => {})
Sledování cesty oddělené tečkami:
jsthis.$watch('a.b', (newVal, oldVal) => {})
Použití getteru pro složitější výrazy:
jsthis.$watch( // pokaždé, když výraz `this.a + this.b` vrátí // jiný výsledek, bude zavolán handler. // Je to jako bychom sledovali computed proměnnou // bez definování ji samotné. () => this.a + this.b, (newVal, oldVal) => {} )
Zastavení watcheru:
jsconst unwatch = this.$watch('a', cb) // později... unwatch()
Viz také:
$emit()
Spustí vlastní událost na aktuální instanci. Jakékoli další parametry budou předány do callbacku listeneru.
Typ
tsinterface ComponentPublicInstance { $emit(event: string, ...args: any[]): void }
Příklad
jsexport default { created() { // pouze událost this.$emit('foo') // s dalšími parametry this.$emit('bar', 1, 2, 3) } }
Viz také:
$forceUpdate()
Vynutí překreslení instance komponenty.
Typ
tsinterface ComponentPublicInstance { $forceUpdate(): void }
Podrobnosti
Mělo by být potřeba jen zřídka, díky plně automatickému reaktivnímu systému Vue. Jediné případy, kdy byste to mohli potřebovat, jsou ty, kdy jste explicitně vytvořili ne-reaktivní stav komponenty pomocí pokročilých funkcí Reactivity API.
$nextTick()
Verze metody nextTick()
vázaná na instanci.
Typ
tsinterface ComponentPublicInstance { $nextTick(callback?: (this: ComponentPublicInstance) => void): Promise<void> }
Podrobnosti
Jediný rozdíl oproti globální verzi
nextTick()
je, že callback předanýthis.$nextTick()
bude mít svůj kontextthis
vázaný na aktuální instanci komponenty.Viz také:
nextTick()