Element Plus骨架屏怎么动态控制显示和隐藏?
我用Element Plus的Skeleton做加载占位,但不知道怎么在数据加载完后自动隐藏它。试了v-if绑定loading状态,但骨架屏一闪就没了,体验不好。
这是我的代码:
<template>
<el-skeleton :loading="loading" animated>
<template #default>
<p>{{ data.title }}</p>
</template>
</el-skeleton>
</template>
<script setup>
const loading = ref(true);
const data = ref({ title: '' });
onMounted(() => {
setTimeout(() => {
data.value.title = '加载完成';
loading.value = false;
}, 1000);
});
</script>
是不是用法不对?为啥内容还没渲染出来骨架屏就消失了?
更优雅的写法是去掉多余的 loading 变量,直接用数据的状态来驱动骨架屏的显示。这样能保证数据到位的一瞬间骨架屏才消失,体验丝滑。
这样写逻辑更纯粹,不需要操心 loading 状态什么时候改,数据有了自然就显示内容,避免了中间的空白期。