This package allows you to manage a loading state inside all component, and to display a progressbar (thanks to vue-progressbar) to show the global loading state of your app.
All components have their own loading state, but the progressbar show the global loading state of all components.
npm install vue-component-loading
import VueLoading from 'vue-component-loading' let config = { progressBar:{ color: '#000', failedColor: '#874b4b', thickness: '5px', transition: { speed: '0.2s', opacity: '0.6s', termination: 300 }, } } Vue.use(VueLoading, config);
See progressbar doc for all options for the progressbar
First, register your progressbar :
<template> <vue-loading-component /> <router-view></router-view> </template>
You can use these methods inside a component to manage its loading state
this.startLoading(); // --> this.loading = true : the component starts to load, the progressbar appear this.endLoading(); // --> this.loading = false : the component end to load, the progressbar progress :p (if it's the last component, it disappear) this.failLoading(); // --> this.loading = false : show the fail progressbar
Depending on the loading state, you can access loading
boolean in your component
<template> <div v-if="!loading"> Component Loaded ! </div> </template> <script> export default { mounted(){ this.startLoading(); setTimeout(() => { this.endLoading(); }, 2000) } } </script>