我在用 Vue 做一个商品列表页,加了骨架屏来优化首屏体验,但每次数据回来的时候会先闪一下空白,再显示真实内容,体验很割裂。明明骨架屏和真实结构是一样的,不知道是不是 v-if 切换时机的问题?
我现在的逻辑是这样:
const loading = ref(true);
onMounted(async () => {
await fetchData();
loading.value = false;
});
模板里用 v-if="loading" 控制骨架屏,v-else 显示真实列表。有没有更好的做法避免这个闪烁?
或者更省事点,直接给骨架屏加个min-height撑住容器高度,这样切换时空间不会变:
第一种方案最稳妥,DOM始终存在,切换丝滑不闪烁。