API Global: General
version
Expone la versión actual de Vue.
Tipo:
stringEjemplo
jsimport { version } from 'vue' console.log(version)
nextTick()
Una utilidad para esperar el siguiente vaciado de actualizaciones del DOM.
Tipo
tsfunction nextTick(callback?: () => void): Promise<void>Detalles
Cuando mutas el estado reactivo en Vue, las actualizaciones resultantes del DOM no se aplican sincrónicamente. En su lugar, Vue las almacena en un búfer hasta el "siguiente tick" para asegurar que cada
componentese actualice solo una vez, sin importar cuántos cambios de estado hayas realizado.nextTick()se puede usar inmediatamente después de un cambio de estado para esperar que las actualizaciones del DOM se completen. Puedes pasar unacallbackcomo argumento, o esperar laPromisedevuelta.Ejemplo
vue<script setup> import { ref, nextTick } from 'vue' const count = ref(0) async function increment() { count.value++ // DOM not yet updated console.log(document.getElementById('counter').textContent) // 0 await nextTick() // DOM is now updated console.log(document.getElementById('counter').textContent) // 1 } </script> <template> <button id="counter" @click="increment">{{ count }}</button> </template>Ver también
this.$nextTick()
defineComponent()
Un asistente de tipos para definir un componente de Vue con inferencia de tipos.
Tipo
ts// options syntax function defineComponent( component: ComponentOptions ): ComponentConstructor // function syntax (requires 3.3+) function defineComponent( setup: ComponentOptions['setup'], extraOptions?: ComponentOptions ): () => anyEl tipo se simplifica para mayor legibilidad.
Detalles
El primer argumento espera un objeto de
opcionesdelcomponente. Elvalor de retornoserá el mismo objeto deopciones, ya que la función es esencialmente una operación nula en tiempo de ejecución solo para fines de inferencia de tipos.Ten en cuenta que el
tipo de retornoes un poco especial: será untipo de constructorcuyotipo de instanciaes eltipo de instanciadecomponenteinferido basado en lasopciones. Esto se usa para la inferencia de tipos cuando eltipo de retornose usa como una etiqueta en TSX.Puedes extraer el
tipo de instanciade uncomponente(equivalente al tipo dethisen susopciones) deltipo de retornodedefineComponent()de esta manera:tsconst Foo = defineComponent(/* ... */) type FooInstance = InstanceType<typeof Foo>Firma de la Función
- Solo soportado en 3.3+
defineComponent()también tiene unafirmaalternativa que está destinada a ser utilizada con laComposition APIy funciones de renderizado o JSX.En lugar de pasar un objeto de
opciones, se espera unafunción. Estafunciónfunciona igual que lafunciónsetup()de laComposition API: recibe laspropsy elcontexto de setup. Elvalor de retornodebe ser unafunción de renderizado- tantoh()como JSX son soportados:jsimport { ref, h } from 'vue' const Comp = defineComponent( (props) => { // use Composition API here like in <script setup> const count = ref(0) return () => { // render function or JSX return h('div', count.value) } }, // extra options, e.g. declare props and emits { props: { /* ... */ } } )El principal caso de uso para esta
firmaes conTypeScript(y en particular con TSX), ya que soportagenéricos:tsxconst Comp = defineComponent( <T extends string | number>(props: { msg: T; list: T[] }) => { // use Composition API here like in <script setup> const count = ref(0) return () => { // render function or JSX return <div>{count.value}</div> } }, // manual runtime props declaration is currently still needed. { props: ['msg', 'list'] } )En el futuro, planeamos proporcionar un
pluginde Babel que infiera e inyecte automáticamente laspropsen tiempo de ejecución (como paradefinePropsen SFCs) para que ladeclaración de propsen tiempo de ejecución pueda omitirse.Nota sobre el
TreeshakingdewebpackDebido a que
defineComponent()es unallamada a función, podría parecer que produciríaefectos secundariospara algunasherramientas de construcción, por ejemplo,webpack. Esto evitará que elcomponenteseatree-shakenincluso cuando elcomponentenunca se use.Para indicar a
webpackque estallamada a funciónes segura para sertree-shaken, puedes añadir una notación decomentario/*#__PURE__*/antes de lallamada a función:jsexport default /*#__PURE__*/ defineComponent(/* ... */)Ten en cuenta que esto no es necesario si estás usando
Vite, porqueRollup(elbundlerde producción subyacente utilizado porVite) es lo suficientemente inteligente como para determinar quedefineComponent()es, de hecho, libre deefectos secundariossin la necesidad deanotaciones manuales.Ver también Guía - Uso de Vue con
TypeScript
defineAsyncComponent()
Define un componente asíncrono que se carga perezosamente solo cuando se renderiza. El argumento puede ser una función de cargador o un objeto de opciones para un control más avanzado del comportamiento de carga.
Tipo
tsfunction defineAsyncComponent( source: AsyncComponentLoader | AsyncComponentOptions ): Component type AsyncComponentLoader = () => Promise<Component> interface AsyncComponentOptions { loader: AsyncComponentLoader loadingComponent?: Component errorComponent?: Component delay?: number timeout?: number suspensible?: boolean onError?: ( error: Error, retry: () => void, fail: () => void, attempts: number ) => any }Ver también Guía -
Componentes Asíncronos