vue2整个项目中,数据请求显示loading图----------未完成阅读,码
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失。这个,一般只需要在封装的axios中写入js事件即可。当然,我们首先需要在app.vue中,加入此图片。如下:
- <template>
- <div id="app">
- <loading v-show="fetchLoading"></loading>
- <router-view></router-view>
- </div>
- </template>
- <script>
- import { mapGetters } from 'vuex';
- import Loading from './components/common/loading';
- export default {
- name: 'app',
- data() {
- return {
- }
- },
- computed: {
- ...mapGetters([
- 'fetchLoading',
- ]),
- },
- components: {
- Loading,
- }
- }
- </script>
- <style>
- #app{
- width: 100%;
- height: 100%;
- }
- </style>
这里的fetchLoading是存在vuex里面的一个变量。在store/modules/common.js里需要如下定义:
- /* 此js文件用于存储公用的vuex状态 */
- import api from './../../fetch/api'
- import * as types from './../types.js'
- const state = {
- // 请求数据时加载状态loading
- fetchLoading: false
- }
- const getters = {
- // 请求数据时加载状态
- fetchLoading: state => state.fetchLoading
- }
- const actions = {
- // 请求数据时状态loading
- FETCH_LOADING({
- commit
- }, res) {
- commit(types.FETCH_LOADING, res)
- },
- }
- const mutations = {
- // 请求数据时loading
- [types.FETCH_LOADING] (state, res) {
- state.fetchLoading = res
- }
- }
loading组件如下:
- <template>
- <div class="loading">
- <img src="./../../assets/main/running.gif" alt="">
- </div>
- </template>
- <script>
- export default {
- name: 'loading',
- data () {
- return {}
- },
- }
- </script>
- <!-- Add "scoped" attribute to limit CSS to this component only -->
- <style scoped>
- .loading{
- position: fixed;
- top:0;
- left:0;
- z-index:121;
- width: 100%;
- height: 100%;
- background: rgba(0,0,0,0.3);
- display: table-cell;
- vertical-align: middle;
- text-align: center;
- }
- .loading img{
- margin:5rem auto;
- }
- </style>
最后在fetch/api.js里封装的axios里写入判断loading事件即可:如下
- // axios的请求时间
- let axiosDate = new Date()
- export function fetch (url, params) {
- return new Promise((resolve, reject) => {
- axios.post(url, params)
- .then(response => {
- // 关闭 loading图片消失
- let oDate = new Date()
- let time = oDate.getTime() - axiosDate.getTime()
- if (time < 500) time = 500
- setTimeout(() => {
- store.dispatch('FETCH_LOADING', false)
- }, time)
- resolve(response.data)
- })
- .catch((error) => {
- // 关闭 loading图片消失
- store.dispatch('FETCH_LOADING', false)
- axiosDate = new Date()
- reject(error)
- })
- })
- }
- export default {
- // 组件中公共页面请求函数
- commonApi (url, params) {
- if(stringQuery(window.location.href)) {
- store.dispatch('FETCH_LOADING', true);
- }
- axiosDate = new Date();
- return fetch(url, params);
- }
- }
这样就实现了,项目中当加载数据的时候,显示gif图片,当数据加载出来时消失。希望能帮到需要的人
vue2整个项目中,数据请求显示loading图----------未完成阅读,码的更多相关文章
- vue2整个项目中,数据请求显示loading图
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...
- vue数据请求显示loading图
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...
- Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南
Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南 因为平时都是使用 VSCode ESLint + Prettier 检测格式化不规范代码,但是随着接手的项目越来越多 ...
- 关于vuex的项目中数据流动方式
vue的核心是数据驱动,所有数据变更的时机很重要,也就是watch的内容,一般是数据逻辑的操作.在使用vuex的项目中,我们在vuex中只是发请求.拿数据,在视图中来进行逻辑的操作.数据的更新. 1. ...
- vue 项目中实时请求接口 建立长连接
需求:在项目中需要每隔五秒请求一次接口 第一种方法:直接在mounted钩子函数中处理 mounted() { window.setInterval(() => { setTimeout(thi ...
- ionic项目中手机状态栏显示使用$cordovaStatusbar插件
在项目中发现Android和iOS在手机状态栏样式不一样,然后就查到有一个cordova插件可以解决这个问题 1.下载插件$cordovaStatusbar命令: cordova plugin add ...
- 记一次利用AutoMapper优化项目中数据层到业务层的数据传递过程。
目前项目中获取到DataSet数据后用下面这种方式复制数据. List<AgreementDoc> list = new List<AgreementDoc>(); ].Row ...
- vue2.0项目中使用Ueditor富文本编辑器示例
最近在vue项目中需要使用富文本编辑器,于是将Ueditor集成进来,作为公共组件. 在线预览:https://suweiteng.github.io/vue2-management-platform ...
- 如何在vue2.0项目中引用element-ui和echart.js
1 项目中怎样添加elment-ui 和 echart.js 1.1直接在packjson 里面的 dependencies 配置 "element-ui": "^1.3 ...
随机推荐
- Java数组之冒泡排序
package com.kangkang.array; import java.util.Arrays; public class demo07 { public static void main(S ...
- Vue.js 可排序列表 (Sortable & Searchable Tables) 组件
可排序表格 (Sortable & Searchable Tables) 在网页和表单设计中非常常用.用户可以通过点击表头对将表格以该列做顺序或降序排列,也可以利用 Search Box 对表 ...
- 为什么要用Spring Boot?
什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而 ...
- Pyqt5学习笔记(一)
Python已有的GUI框架: Tkinter(python内嵌的GUI环境,使用TCL实现,易学易用,方便简单创GUI自带无需安装,适用于Unix.Windows和Mac系统组,在Tk8.0的后续版 ...
- 新的颜色对比度算法-感知对比度算法APCA
目录 对比度 在控制台查看 插件或网站 感知对比度算法(APCA) APCA Math 原理 js 实现的 SAPC 最后 灵感的源泉来源于不断的接受新鲜事物. Chrome 89 新功能一览,性能提 ...
- VScode 自定义用户代码块
1定义html中的vue 见地址 https://blog.csdn.net/qq_40191093/article/details/82915028 2 https://www.cnblogs.c ...
- D8016 “/ZI”和“/Gy-”命令行选项不兼容
老版本vs项目升级到vs2017后遇到编译报错: /ZI选项在: /Gy- 选项在: 修改'/ZI'选项为'无' 或者 '/Gy-' 修改为'/Gy'
- vue-i18n 国际化语言切换
vue-i18n 用于前端vue项目中,需要多语言切换的场景 安装方法(npm) npm install vue-i18n 简单使用 1.在vue项目的main.ts文件中实例化 i18n imp ...
- 前端 | 使用 ECharts 绘制关系图
0 需求 做的项目需要画一个关系图,主要需求如下: 需要展示6种对象之间的关系:数据机构 数据 合约 模型 计算机构 应用 支持突出显示6种对象中的某一种的所有对象 支持Top x子图功能.top x ...
- vue-cli2 生成的项目打包优化(持续学习中)
1.昨天看到自己的项目每次打包后都是30M左右,就觉得这个打包后的dist文件太大了,能不能小点呢, 然后就看网上的资料,提供了好多优化的办法,但是我只用了一个,后期再不断的优化吧. 打开工程项目文件 ...