一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失。这个,一般只需要在封装的axios中写入js事件即可。当然,我们首先需要在app.vue中,加入此图片。如下:

  1. <template>
  2. <div id="app">
  3. <loading v-show="fetchLoading"></loading>
  4. <router-view></router-view>
  5. </div>
  6. </template>
  7.  
  8. <script>
  9. import { mapGetters } from 'vuex';
  10. import Loading from './components/common/loading';
  11.  
  12. export default {
  13. name: 'app',
  14. data() {
  15. return {
  16. }
  17. },
  18. computed: {
  19. ...mapGetters([
  20. 'fetchLoading',
  21. ]),
  22. },
  23. components: {
  24. Loading,
  25. }
  26. }
  27. </script>
  28.  
  29. <style>
  30. #app{
  31. width: 100%;
  32. height: 100%;
  33. }
  34. </style>

这里的fetchLoading是存在vuex里面的一个变量。在store/modules/common.js里需要如下定义:

  1. /* 此js文件用于存储公用的vuex状态 */
  2. import api from './../../fetch/api'
  3. import * as types from './../types.js'
  4. const state = {
  5. // 请求数据时加载状态loading
  6. fetchLoading: false
  7. }
  8. const getters = {
  9. // 请求数据时加载状态
  10. fetchLoading: state => state.fetchLoading
  11. }
  12. const actions = {
  13. // 请求数据时状态loading
  14. FETCH_LOADING({
  15. commit
  16. }, res) {
  17. commit(types.FETCH_LOADING, res)
  18. },
  19. }
  20. const mutations = {
  21. // 请求数据时loading
  22. [types.FETCH_LOADING] (state, res) {
  23. state.fetchLoading = res
  24. }
  25. }

loading组件如下:

  1. <template>
  2. <div class="loading">
  3. <img src="./../../assets/main/running.gif" alt="">
  4. </div>
  5. </template>
  6.  
  7. <script>
  8. export default {
  9. name: 'loading',
  10. data () {
  11. return {}
  12. },
  13. }
  14. </script>
  15. <!-- Add "scoped" attribute to limit CSS to this component only -->
  16. <style scoped>
  17. .loading{
  18. position: fixed;
  19. top:0;
  20. left:0;
  21. z-index:121;
  22. width: 100%;
  23. height: 100%;
  24. background: rgba(0,0,0,0.3);
  25. display: table-cell;
  26. vertical-align: middle;
  27. text-align: center;
  28. }
  29. .loading img{
  30. margin:5rem auto;
  31. }
  32. </style>

最后在fetch/api.js里封装的axios里写入判断loading事件即可:如下

  1. // axios的请求时间
  2. let axiosDate = new Date()
  3. export function fetch (url, params) {
  4. return new Promise((resolve, reject) => {
  5. axios.post(url, params)
  6. .then(response => {
  7. // 关闭 loading图片消失
  8. let oDate = new Date()
  9. let time = oDate.getTime() - axiosDate.getTime()
  10. if (time < 500) time = 500
  11. setTimeout(() => {
  12. store.dispatch('FETCH_LOADING', false)
  13. }, time)
  14. resolve(response.data)
  15. })
  16. .catch((error) => {
  17. // 关闭 loading图片消失
  18. store.dispatch('FETCH_LOADING', false)
  19. axiosDate = new Date()
  20. reject(error)
  21. })
  22. })
  23. }
  24. export default {
  25. // 组件中公共页面请求函数
  26. commonApi (url, params) {
  27. if(stringQuery(window.location.href)) {
  28. store.dispatch('FETCH_LOADING', true);
  29. }
  30. axiosDate = new Date();
  31. return fetch(url, params);
  32. }
  33. }

这样就实现了,项目中当加载数据的时候,显示gif图片,当数据加载出来时消失。希望能帮到需要的人

vue2整个项目中,数据请求显示loading图----------未完成阅读,码的更多相关文章

  1. vue2整个项目中,数据请求显示loading图

    一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...

  2. vue数据请求显示loading图

    一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...

  3. Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南

    Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南 因为平时都是使用 VSCode ESLint + Prettier 检测格式化不规范代码,但是随着接手的项目越来越多 ...

  4. 关于vuex的项目中数据流动方式

    vue的核心是数据驱动,所有数据变更的时机很重要,也就是watch的内容,一般是数据逻辑的操作.在使用vuex的项目中,我们在vuex中只是发请求.拿数据,在视图中来进行逻辑的操作.数据的更新. 1. ...

  5. vue 项目中实时请求接口 建立长连接

    需求:在项目中需要每隔五秒请求一次接口 第一种方法:直接在mounted钩子函数中处理 mounted() { window.setInterval(() => { setTimeout(thi ...

  6. ionic项目中手机状态栏显示使用$cordovaStatusbar插件

    在项目中发现Android和iOS在手机状态栏样式不一样,然后就查到有一个cordova插件可以解决这个问题 1.下载插件$cordovaStatusbar命令: cordova plugin add ...

  7. 记一次利用AutoMapper优化项目中数据层到业务层的数据传递过程。

    目前项目中获取到DataSet数据后用下面这种方式复制数据. List<AgreementDoc> list = new List<AgreementDoc>(); ].Row ...

  8. vue2.0项目中使用Ueditor富文本编辑器示例

    最近在vue项目中需要使用富文本编辑器,于是将Ueditor集成进来,作为公共组件. 在线预览:https://suweiteng.github.io/vue2-management-platform ...

  9. 如何在vue2.0项目中引用element-ui和echart.js

    1 项目中怎样添加elment-ui 和 echart.js 1.1直接在packjson 里面的 dependencies 配置 "element-ui": "^1.3 ...

随机推荐

  1. Java数组之冒泡排序

    package com.kangkang.array; import java.util.Arrays; public class demo07 { public static void main(S ...

  2. Vue.js 可排序列表 (Sortable & Searchable Tables) 组件

    可排序表格 (Sortable & Searchable Tables) 在网页和表单设计中非常常用.用户可以通过点击表头对将表格以该列做顺序或降序排列,也可以利用 Search Box 对表 ...

  3. 为什么要用Spring Boot?

    什么是Spring Boot?   Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而 ...

  4. Pyqt5学习笔记(一)

    Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...

  5. 新的颜色对比度算法-感知对比度算法APCA

    目录 对比度 在控制台查看 插件或网站 感知对比度算法(APCA) APCA Math 原理 js 实现的 SAPC 最后 灵感的源泉来源于不断的接受新鲜事物. Chrome 89 新功能一览,性能提 ...

  6. VScode 自定义用户代码块

    1定义html中的vue 见地址 https://blog.csdn.net/qq_40191093/article/details/82915028 2  https://www.cnblogs.c ...

  7. D8016 “/ZI”和“/Gy-”命令行选项不兼容

    老版本vs项目升级到vs2017后遇到编译报错: /ZI选项在: /Gy- 选项在: 修改'/ZI'选项为'无' 或者 '/Gy-' 修改为'/Gy'

  8. vue-i18n 国际化语言切换

    vue-i18n 用于前端vue项目中,需要多语言切换的场景 安装方法(npm) npm install vue-i18n 简单使用   1.在vue项目的main.ts文件中实例化 i18n imp ...

  9. 前端 | 使用 ECharts 绘制关系图

    0 需求 做的项目需要画一个关系图,主要需求如下: 需要展示6种对象之间的关系:数据机构 数据 合约 模型 计算机构 应用 支持突出显示6种对象中的某一种的所有对象 支持Top x子图功能.top x ...

  10. vue-cli2 生成的项目打包优化(持续学习中)

    1.昨天看到自己的项目每次打包后都是30M左右,就觉得这个打包后的dist文件太大了,能不能小点呢, 然后就看网上的资料,提供了好多优化的办法,但是我只用了一个,后期再不断的优化吧. 打开工程项目文件 ...