Maison  >  Article  >  interface Web  >  Comment implémenter l'effet de chargement global dans Vue

Comment implémenter l'effet de chargement global dans Vue

WBOY
WBOYoriginal
2023-06-11 09:05:205784parcourir

Dans le développement front-end, nous avons souvent un scénario dans lequel l'utilisateur doit attendre que les données soient chargées lors de l'interaction avec la page Web. À ce moment, un effet de chargement est généralement affiché pour rappeler à l'utilisateur de le faire. attendez. Dans le framework Vue, il n'est pas difficile d'implémenter un effet de chargement global. Voyons comment l'implémenter.

Première étape : Créer un plug-in Vue

Nous pouvons créer un plug-in Vue nommé loading, qui peut être utilisé dans tous les Vue instances Citation. Dans le plug-in, nous devons implémenter les deux méthodes suivantes : loading的Vue插件,该插件可以在所有的Vue实例中引用。在插件中,我们需要实现以下两个方法:

  1. show():用于显示loading效果
  2. hide():用于隐藏loading效果

以下是loading插件的代码:

const Loading = {
  show() {
    // 显示loading效果的代码
  },
  hide() {
    // 隐藏loading效果的代码
  }
}

export default {
  install(Vue) {
    Vue.prototype.$loading = Loading
  }
}

在上述代码中,我们定义了一个名为Loading的对象,该对象包含了显示和隐藏loading效果的方法。install()方法被用于将loading对象安装到Vue实例上,从而使该对象在所有Vue实例中可以被引用。

第二步:实现loading组件

为了实现loading效果,我们需要在Vue组件中添加一个覆盖整个屏幕的loading层。这可以通过CSS来实现。具体来说,我们可以在Vue组件内动态添加和删除loading层的DOM元素,从而实现loading效果的显示和隐藏。以下是一个简单的loading组件:

<template>
  <div v-if="visible" class="loading-mask">
    <div class="loading-spinner"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      visible: false
    }
  },
  methods: {
    show() {
      this.visible = true
    },
    hide() {
      this.visible = false
    }
  }
}
</script>

<style>
.loading-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.loading-spinner {
  border: 4px solid #f3f3f3;
  border-radius: 50%;
  border-top: 4px solid #3498db;
  width: 60px;
  height: 60px;
  -webkit-animation: spin 2s linear infinite;
  animation: spin 2s linear infinite;
}

@-webkit-keyframes spin {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
</style>

在上述代码中,我们定义了一个名为loading-mask的div层,它覆盖整个页面,并设置了一个半透明的黑色背景。在loading-mask中,我们添加了另一个名为loading-spinner的div层,该层用于显示一个旋转的loading图标。最后,我们在Vue组件的data中定义了一个visible变量,用于判断loading层是否需要显示。

第三步:在组件中使用loading

现在我们已经实现了一个基本的loading组件和一个Vue插件,接下来我们需要在Vue组件中使用它们。

首先,在Vue组件中引入刚才创建的Vue插件,并把loading组件添加到当前组件中:

<template>
  <div>
    <h1>这是一个Vue组件</h1>
    <loading ref="loading"></loading>
  </div>
</template>

<script>
import LoadingPlugin from '@/plugins/loading'
import Loading from '@/components/Loading'

export default {
  name: 'HelloWorld',
  components: {
    Loading
  },
  mounted() {
    this.$loading = this.$refs.loading
  },
  plugins: [
    LoadingPlugin
  ],
  methods: {
    fetchData() {
      this.$loading.show() // 显示loading效果
      // 发送请求
      // ...
      this.$loading.hide() // 隐藏loading效果
    }
  }
}
</script>

在上述代码中,我们首先引入了之前创建的Vue插件LoadingPlugin,然后使用components属性将loading组件添加到当前组件中。在mounted()方法中,我们将loading组件的实例赋值给$loading属性,从而方便我们在当前组件中调用show和hide方法来显示和隐藏loading效果。

最后,在fetchData()方法中,我们可以调用this.$loading.show()来显示loading效果,在数据加载完毕后,再调用this.$loading.hide()方法来隐藏它。这样我们就成功地实现了一个全局loading效果。

总结

在本文中,我们介绍了如何在Vue框架中实现一个全局loading效果。我们创建了一个loading

  1. show() : utilisé pour afficher l'effet de chargement
  2. hide( ) : utilisé pour masquer l'effet de chargement
Voici le code du plug-in loading : #🎜🎜 #rrreee#🎜🎜#Dans le code ci-dessus, nous définissons un objet nommé Loading, qui contient des méthodes pour afficher et masquer l'effet de chargement. La méthode install() est utilisée pour installer l'objet loading sur l'instance de Vue afin que l'objet puisse être référencé dans toutes les instances de Vue. #🎜🎜##🎜🎜#Étape 2 : Implémenter le composant de chargement #🎜🎜##🎜🎜#Afin d'obtenir l'effet de chargement, nous devons ajouter une couche de chargement couvrant tout l'écran au composant Vue. Ceci peut être réalisé via CSS. Plus précisément, nous pouvons ajouter et supprimer dynamiquement les éléments DOM de la couche de chargement dans le composant Vue pour afficher et masquer l'effet de chargement. Ce qui suit est un composant de chargement simple : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous définissons un calque div nommé loading-mask, qui couvre toute la page et définit un fond noir translucide. . Dans loading-mask, nous avons ajouté un autre calque div nommé loading-spinner, qui est utilisé pour afficher une icône de chargement rotative. Enfin, nous avons défini une variable visible dans les data du composant Vue pour déterminer si la couche de chargement doit être affichée. #🎜🎜##🎜🎜#Étape 3 : Utiliser le chargement dans le composant#🎜🎜##🎜🎜#Maintenant que nous avons implémenté un composant de chargement de base et un plug-in Vue, nous devons les utiliser dans le composant Vue . #🎜🎜##🎜🎜#Tout d'abord, introduisez le plug-in Vue qui vient d'être créé dans le composant Vue, et ajoutez le composant de chargement au composant actuel : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous introduisons d'abord le précédent Créez le plug-in Vue LoadingPlugin, puis utilisez l'attribut components pour ajouter le composant de chargement au composant actuel. Dans la méthode Mounted(), nous attribuons l'instance du composant de chargement à l'attribut $loading, ce qui nous permet d'appeler plus facilement les méthodes show et hide du composant actuel pour afficher et masquer l'effet de chargement. #🎜🎜##🎜🎜#Enfin, dans la méthode fetchData(), nous pouvons appeler this.$loading.show() pour afficher l'effet de chargement. Une fois les données chargées, appelez méthode this.$loading.hide() pour le masquer. De cette façon, nous avons réussi à obtenir un effet de chargement global. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Dans cet article, nous présentons comment implémenter un effet de chargement global dans le framework Vue. Nous avons créé un plugin <code>loading et l'avons installé dans l'instance Vue afin qu'il puisse être appelé dans tous les composants Vue. Nous avons également implémenté un composant de chargement, dans lequel les éléments DOM sont ajoutés et supprimés dynamiquement pour afficher et masquer l'effet de chargement. Enfin, nous appelons les méthodes show et hide de l'objet $loading dans le composant Vue pour afficher et masquer l'effet de chargement. Cette implémentation nous permet d'obtenir une bonne expérience utilisateur, de réduire le temps d'attente des utilisateurs et d'améliorer les performances des applications. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn