Uso di base
Avvolgi un componente, collega un flag di caricamento, fatto.
Uso di base
Avvolgi e attiva
Il pattern fondamentale è un singolo wrapper <Skeletonizer> collegato al tuo stato di caricamento:
<script setup lang="ts">
const { data: user, pending } = await useLazyFetch('/api/user')
</script>
<template>
<Skeletonizer :enabled="pending">
<article class="profile">
<img :src="user?.avatar" width="64" height="64" class="avatar">
<h1>{{ user?.name }}</h1>
<p>{{ user?.bio }}</p>
<button>Segui</button>
</article>
</Skeletonizer>
</template>
Mentre pending è true, l'avatar, il titolo, il paragrafo e il pulsante vengono renderizzati come
ossa animate. Quando la fetch si risolve, gli originali vengono ripristinati all'istante — nello
stesso punto, senza alcuno spostamento del layout.
Controllo globale
Da qualsiasi punto della tua app puoi pilotare lo stato globale dello skeleton:
const skeletonizer = useSkeletonizer()
skeletonizer.enable()
skeletonizer.disable()
skeletonizer.toggle()
Qualsiasi <Skeletonizer> senza una prop :enabled esplicita segue questo flag globale.
Primitive manuali
Preferisci comporre uno skeleton a mano (ad es. per contenuti non ancora renderizzati)? Usa i mattoncini di base:
<template>
<SkeletonList :items="6" :lines="2" />
<SkeletonTable :rows="10" :columns="5" />
<SkeletonCard media avatar :lines="3" />
</template>
Vedi Componenti per l'elenco completo.