Vue 3 全局 Loading 组件实现 - 优雅的加载状态管理
<template>
<div class'loading-wrapper' v-if='loading'>
<div class'loading-overlay'></div>
<div class'loading-content'>
<div class'loading-spinner'></div>
<div class'loading-text'>{{ text }}</div>
</div>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const loading = ref(false);
const text = ref('Loading...');
const showLoading = (message = 'Loading...') => {
text.value = message;
loading.value = true;
};
const hideLoading = () => {
loading.value = false;
};
return {
loading,
text,
showLoading,
hideLoading,
};
},
};
</script>
<style>
.loading-wrapper {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 9999;
}
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.6);
}
.loading-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
color: #fff;
font-size: 18px;
}
.loading-spinner {
border: 3px solid rgba(255, 255, 255, 0.3);
border-top-color: #fff;
border-radius: 50%;
width: 30px;
height: 30px;
animation: loading-spinner 0.6s linear infinite;
margin-bottom: 10px;
}
.loading-text {
margin-top: 10px;
}
@keyframes loading-spinner {
to {
transform: rotate(360deg);
}
}
</style>
<p>该组件可以通过调用 <code>showLoading()</code> 和 <code>hideLoading()</code> 方法来显示和隐藏loading。可以通过 <code>text</code> 属性设置loading显示的文本。在需要显示loading时,只需要在组件上调用 <code>showLoading()</code> 方法,loading组件就会出现在页面上。在需要隐藏loading时,只需要调用 <code>hideLoading()</code> 方法即可。该组件的样式可以根据实际需要进行自定义。</p>
原文地址: https://www.cveoy.top/t/topic/n39Q 著作权归作者所有。请勿转载和采集!