Globální API: Obecné
version
Vystavuje aktuální verzi Vue.
Typ:
string
Příklad
jsimport { version } from 'vue' console.log(version)
nextTick()
Pomocná funkce pro čekání na příští aktualizaci DOM.
Typ
tsfunction nextTick(callback?: () => void): Promise<void>
Podrobnosti
Když ve Vue měníte reaktivní stav, výsledné aktualizace DOM se neprovádějí synchronně. Místo toho je Vue ukládá do fronty a aplikuje je až v „dalším tiknutí“ (next tick), aby se zajistilo, že každá komponenta se aktualizuje pouze jednou, bez ohledu na to, kolik změn stavu jste provedli.
nextTick()
můžete použít ihned po změně stavu, abyste počkali na dokončení aktualizace DOM. Můžete buď jako parametr předat callback, nebo počkat na vrácený Promise.Příklad
vue<script setup> import { ref, nextTick } from 'vue' const count = ref(0) async function increment() { count.value++ // DOM ještě nebyl aktualizován console.log(document.getElementById('counter').textContent) // 0 await nextTick() // DOM už je nyní aktualizován console.log(document.getElementById('counter').textContent) // 1 } </script> <template> <button id="counter" @click="increment">{{ count }}</button> </template>
Viz také:
this.$nextTick()
defineComponent()
Pomocná funkce pro podporu typů při definování Vue komponenty s odvozováním typů.
Typ
ts// syntaxe pomocí options function defineComponent( component: ComponentOptions ): ComponentConstructor // syntaxe pomocí funkce (3.3+) function defineComponent( setup: ComponentOptions['setup'], extraOptions?: ComponentOptions ): () => any
Typ je pro lepší čitelnost zjednodušen.
Podrobnosti
První parametr očekává objekt s možnostmi (options) komponenty. Návratová hodnota bude stejný objekt s možnostmi, protože tato funkce se spouští pouze pro účely odvozování typů bez vedlejších efektů.
Mějte však na paměti, že návratový typ je trochu specifický: bude to typ konstruktoru, jehož instanční typ je určen z odvozeného typu instance komponenty na základě options. To se používá pro odvozování typů, když je tento typ použit jako tag v TSX.
Typ instance komponenty (ekvivalent typu
this
v jeho options) můžete získat z návratového typudefineComponent()
takto:tsconst Foo = defineComponent(/* ... */) type FooInstance = InstanceType<typeof Foo>
Syntaxe pomocí funkce
- Podporováno až od verze 3.3+
defineComponent()
má také alternativní způsob zápisu, který je určen pro použití s Composition API a funkce pro vykreslení & JSX.Místo předávání objektu s možnostmi (options) se očekává funkce. Tato funkce funguje stejně jako funkce
setup()
z Composition API: přijímá vlastnosti (props) a kontext pro setup. Návratová hodnota by měla být funkce pro vykreslení - podporovány jsou jakh()
, tak JSX:jsimport { ref, h } from 'vue' const Comp = defineComponent( (props) => { // zde použijte Composition API, stejně jako v <script setup> const count = ref(0) return () => { // funkce pro vykreslení nebo JSX return h('div', count.value) } }, // extra možnosti, např. deklarace props a emits { props: { /* ... */ } } )
Hlavní použití tohoto způsou zápisu je s TypeScriptem (zejména s TSX), protože podporuje generics:
tsx
const Comp = defineComponent(
<T extends string | number>(props: { msg: T; list: T[] }) => {
// zde použijte Composition API, stejně jako v <script setup>
const count = ref(0)
return () => {
// funkce pro vykreslení nebo JSX
return <div>{count.value}</div>
}
},
// ruční deklarace běhových vlastností je momentálně stále ještě potřebná
{
props: ['msg', 'list']
}
)
V budoucnu plánujeme poskytnout Babel plugin, který runtime vlastnosti automaticky odvodí a implementuje (stejně jako u defineProps
ve SFC), takže deklarace runtime vlastností budou moct být vynechány.
Poznámka k webpack Treeshaking
Protože defineComponent()
je volání funkce, může se zdát, že by mohla mít vedlejší efekty pro některé build nástroje, například webpack. To zabrání odstranění komponenty z výsledného balíčku, i když komponenta není nikdy použita.
Abychom nástroji webpack řekli, že toto volání funkce je pro odstranění nepoužitých částí kódu (treeshaking) bezpečné, můžete před voláním funkce přidat komentář /*#__PURE__*/
:
js
export default /*#__PURE__*/ defineComponent(/* ... */)
Toto není nutné, pokud používáte Vite, protože Rollup (základní produkční bundler používaný Vite) je dostatečně chytrý na to, aby určil, že defineComponent()
je ve skutečnosti bez vedlejších efektů i bez potřeby ručních anotací.
- Viz také: Průvodce - Používání Vue s TypeScriptem
defineAsyncComponent()
Definuje asynchronní komponentu, která se načítá „lazy“ až při jejím vykreslení. Parametrem může být buď funkce pro načítání, nebo objekt s pokročilejší kontrolou chování načítání.
Typ
tsfunction defineAsyncComponent( source: AsyncComponentLoader | AsyncComponentOptions ): Component type AsyncComponentLoader = () => Promise<Component>
ts
interface AsyncComponentOptions {
loader: AsyncComponentLoader
loadingComponent?: Component
errorComponent?: Component
delay?: number
timeout?: number
suspensible?: boolean
onError?: (
error: Error,
retry: () => void,
fail: () => void,
attempts: number
) => any
}
- Viz také: Průvodce - Asynchronní komponenty