基于Vue 实现一个中规中矩loading组件

当我们在Vue项目中需要在异步请求或耗时操作进行时,给用户一个等待提示是一种不错的用户体验。本文将详细讲解如何基于Vue实现一个中规中矩的loading组件,希望能帮助大家实现这个功能。

步骤一:创建组件文件

创建一个名为Loading.vue的文件,用于编写loading组件代码。可以使用Vue CLI创建一个新组件,或者手动在项目的components目录下创建该文件。

步骤二:编写组件代码

HTML代码:

下面是loading组件的HTML代码:

<template>
  <div class="loading">
    <div class="loader"></div>
  </div>
</template>

CSS样式

下面是loading组件的CSS样式:

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

.loader {
  border: 10px solid #f3f3f3;
  border-radius: 50%;
  border-top: 10px solid #3498db;
  width: 50px;
  height: 50px;
  -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);
  }
}

JavaScript代码

下面是loading组件的JavaScript代码:

<script>
export default {
  name: "loading",
  props: {
    show: {
      type: Boolean,
      default: false
    }
  }
};
</script>

该组件接受一个名为show的props属性,该属性为Boolean类型,用于控制loading组件的显示和隐藏。

步骤三:在需要的地方使用loading组件

为了使用loading组件,我们需要在需要调用异步请求方法时,在对应的组件中使用loading组件。

示例1:在异步请求中使用

下面是一个例子,演示了如何在异步请求中使用loading组件:

<template>
  <div>
    <button @click="getData">获取数据</button>
    <loading :show="loadingFlag"></loading>
    <div v-if="!loadingFlag">数据显示区域</div>
  </div>
</template>

<script>
import Loading from "@/components/Loading";

export default {
  name: "async-component",
  components: {
    Loading
  },
  data() {
    return {
      loadingFlag: false
    };
  },
  methods: {
    getData() {
      this.loadingFlag = true;
      // 执行异步请求
      axios
        .get("https://jsonplaceholder.typicode.com/todos")
        .then(resp => {
          this.loadingFlag = false;
        });
    }
  }
};
</script>

在异步请求前将loadingFlag设置为true,异步请求结束后将loadingFlag设置为false。在template中使用loading组件,并将loadingFlag作为props属性传递给loading组件。在显示数据的地方使用v-if指令,在loadingFlag为false时才会显示数据区域。

示例2:在路由导航中使用

下面是一个例子,演示了如何在路由导航中使用loading组件:

<template>
  <div>
    <router-link to="/">首页</router-link>
    <router-link to="/about">关于我们</router-link>
    <loading :show="loadingFlag"></loading>
    <router-view @beforeRouteEnter="beforeEnter" @afterRouteEnter="afterEnter"></router-view>
  </div>
</template>

<script>
import Loading from "@/components/Loading";

export default {
  name: "nav-component",
  components: {
    Loading
  },
  data() {
    return {
      loadingFlag: false
    };
  },
  methods: {
    beforeEnter() {
      this.loadingFlag = true;
    },
    afterEnter() {
      this.loadingFlag = false;
    }
  }
};
</script>

在路由导航的代码中,使用了Vue Router自带的导航钩子函数beforeRouteEnter和afterRouteEnter。beforeRouteEnter用于在切换路由前执行一个异步操作,该示例中将loadingFlag设置为true。afterRouteEnter用于在进入路由之后执行一个操作,该示例中将loadingFlag设置为false。在组件的template中使用loading组件即可实现loading效果。

本文详细讲解了如何基于Vue实现一个中规中矩的loading组件,并提供了两个使用示例。希望读者们可以通过本文的介绍,掌握如何实现loading组件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Vue 实现一个中规中矩loading组件 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 巧用 -webkit-box-reflect 倒影实现各类动效(小结)

    下面我将详细讲解 “巧用 -webkit-box-reflect 倒影实现各类动效(小结)” 的完整攻略。 什么是 -webkit-box-reflect -webkit-box-reflect 是一个Webkit私有属性,用于在元素的周围添加一个反射效果,在某些情况下可以实现一些有趣的效果。 -webkit-box-reflect 主要有以下两个属性: -…

    css 2023年6月11日
    00
  • JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解

    这里就为你详细讲解一下如何实现JS弹出浮动窗口,包括拖动和关闭功能。 准备工作 首先,我们需要在HTML文件里引入以下JS和CSS文件: <link rel="stylesheet" href="style.css"> <script src="https://cdn.bootcss.com…

    css 2023年6月10日
    00
  • jquery图片切换实例分析

    jQuery 图片切换实例分析 概述 jQuery 是一个跨浏览器兼容的 JavaScript 库,因其兼容性良好、使用方便,被广泛应用于前端开发中。本文将介绍 jQuery 的图片切换实例,包括切换的原理、具体实现方法以及两个简单的示例说明。 原理 图片切换的原理是通过改变图片的 src 属性来达到切换效果。我们首先编写 HTML 代码,用<img&…

    css 2023年6月11日
    00
  • 使用jQuery mobile NuGet让你的网站在移动设备上同样精彩

    使用jQuery mobile NuGet将你的网站扩展到移动设备具有很大的优势。本攻略将为您提供详细的指导步骤,让你的网站在移动设备上能够更充分的发挥功能。 安装jQuery mobile NuGet 要在你的网站中使用jQuery mobile NuGet,你需要首先安装它。按照以下步骤完成安装: 打开你的项目,右键点击“引用”文件夹。 选择“管理NuG…

    css 2023年6月11日
    00
  • Ajax Control Toolkit 34个服务器端控件第1/2页

    Ajax Control Toolkit 是一套基于 ASP.NET 的 AJAX 扩展控件库,该控件库扩展了 ASP.NET 的功能,提供了一些常用的应用程序控件,例如自动完成、模态窗口等等,大大提高了 Web 应用程序的用户体验。 在使用 Ajax Control Toolkit 之前,需要先将 Ajax Control Toolkit 下载下来并解压,…

    css 2023年6月10日
    00
  • css3 column实现卡片瀑布流布局的示例代码

    下面是关于“CSS3 column实现卡片瀑布流布局的示例代码”的完整攻略。 一、CSS3 column介绍 1. 概述 CSS多列布局(CSS3 column)是CSS3中的一种新特性,可以让我们更方便地实现分栏布局,常用在报纸、杂志等排版较为复杂的场合。 2. column-count column-count可以指定分栏数量,例如: .containe…

    css 2023年6月11日
    00
  • Vue Transition实现类原生组件跳转过渡动画的示例

    下面就是 “Vue Transition实现类原生组件跳转过渡动画的示例” 的完整攻略。 首先,我们需要理解 Vue 中过渡的概念。Vue 提供两个指令,分别为 v-enter 和 v-leave,用于控制 enter/leave 过渡动画。当元素插入或删除时,你可以定义相应动画完成过程。 下面是一个基本的 Vue 过渡使用示例: <template&…

    css 2023年6月11日
    00
  • web开发中怎么样使css书写规范?

    在 Web 开发中,CSS 是一种用于控制网页样式的语言。为了使 CSS 代码更加规范、易读、易维护,需要遵循一些 CSS 书写规范。以下是关于“Web 开发中如何使 CSS 书写规范”的完整攻略。 步骤一:选择 CSS 风格指南 首先,需要选择一份 CSS 风格指南,以确保 CSS 代码的一致性和可读性。以下是一些常用的 CSS 风格指南: Google …

    css 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部