如何使用vant库的loading组件

2023-10-28

第一步,main.js文件引入下载的loading

//全局引入ui组件
import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);

第二步,在vuex中定义全局变量loading,定义修改loading变量显示隐藏的方法

export default new Vuex.Store({
  state: {
    isShow: false,
  },
  mutations: {
    // 展示loading的方法
    showLoading(state) {
      state.isShow = true
    },
    // 隐藏loading的方法
    hideLoading(state) {
      state.isShow = false
    },
  },
  actions: {},
  modules: {}
})

第三步,在App.vue主文件中引入全局变量loading在页面使用

<template>
  <div id="app">
    <router-view />
    <van-loading
      v-show="isShow"
      size="24px"
      color="#1989fa"
      vertical
    >加载中...</van-loading>
  </div>
</template>

import { mapState } from 'vuex'

computed: {
    ...mapState(['isShow'])
  },

// van-loading设置样式,在页面最中间显示
<style lang="less">
.van-loading {
  position: fixed !important;
  top: 50%;
  left: 50%;
  transform: translateX(-50%);
}
</style>

第五步,在请求拦截器中和响应拦截器中统一设置loading

// 2.请求拦截器
service.interceptors.request.use(config => {
  store.commit('showLoading');
  //发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
  // config.data = JSON.stringify(config.data); //数据转化,也可以使用qs转换
  //注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
  // const token = window.sessionStorage.getItem('Admin-Token'); //这里取token之前,需要先拿到token,存一下
  const token = getToken()
  // console.log(token,'token456');
  if (token) {
    config.headers['X-HRSS-SERVICE-TOKEN'] = token
  } else {
    setTimeout(() => {
      // this.$message({
      //   message: '此链接已过期',
      //   type: 'warning'
      // });
      window.location.href = localStorage.getItem('return-Url')
    }, 2000);
  }
  return config;
}, error => {
  store.commit('hideLoading');
  return Promise.reject(error);
})


// 3.响应拦截器
service.interceptors.response.use(response => {
  // debugger
  store.commit('hideLoading');
  // console.log(response, 'response');
  const {
    data,
    // config
  } = response;
  // console.log(data,'data')
  if (data.code !== 200) {
    switch (data.code) {
      case 401:
        break;
      case 404:
        break;
      case 403:
        break;
      default:
        break;
    }

    return Promise.reject({
      // url: config.url,
      // code: data.code,
      // data: data.data,
      // msg: data.msg,
      ...data,
    } || "Error");
  } else {
    return data;
  }
}, error => {
  store.commit('hideLoading');
  console.log(error)
  if (error && error.response) {
    // 1.公共错误处理
    // 2.根据响应码具体处理
    switch (error.response.status) {
      case 400:
        error.message = '错误请求'
        break;
      case 401:
        error.message = '未授权,请重新登录'
        break;
      case 403:
        // 后端返403时就是token过期了,此时清空token并且跳转页面
        error.message = '拒绝访问'
        break;
      case 404:
        error.message = '请求错误,未找到该资源'
        break;
      case 405:
        error.message = '请求方法未允许'
        break;
      case 408:
        error.message = '请求超时'
        break;
      case 500:
        error.message = '服务器端出错'
        break;
      case 501:
        error.message = '网络未实现'
        break;
      case 502:
        error.message = '网络错误'
        break;
      case 503:
        error.message = '服务不可用'
        break;
      case 504:
        error.message = '网络超时'
        break;
      case 505:
        error.message = 'http版本不支持该请求'
        break;
      default:
        error.message = `连接错误${error.response.status}`
        break;
    }
  } else {
    // 超时处理
    if (JSON.stringify(error).includes('timeout')) {
      // Message.error('服务器响应超时,请刷新当前页')
    }
    // Message.error('连接服务器失败')
  }
  // Message.error(error.message);
  return Promise.reject(error);
})

完毕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用vant库的loading组件 的相关文章

  • 如何实现 JavaScript 对象被垃圾回收时触发的函数?

    实际上 垃圾被收集 销毁或以其他方式超出范围 我想要做的是 当调用了 bind 方法的对象被销毁时 取消绑定非 DOM 元素上的事件处理程序 编辑 我又查看了我的代码 并决定我真正需要它的唯一地方是当不再需要包含该对象的模块时 这通常发生在
  • Firebase Function 从其他文件导入函数 - javascript

    我正在使用 javascript 构建 firebase 函数 现在我有很多内部调用函数 我计划将这些函数移动到不同的文件中 以避免 index js 变得非常混乱 下面是当前的文件结构 functions index js interna
  • 用不同的颜色为 Google 热图着色

    我试图开发一个遵循 Google Map API 的热度 https developers google com maps documentation javascript examples layer heatmap https deve
  • 如何创建一个多重过滤函数来过滤掉多个属性?

    我有一个要过滤的对象数组 name Apple age 24 model Android status Under development name Roboto age 24 model Apple status Running 我需要使
  • 具有两组子组件的 React 组件

    我正在创建一个组件 需要接收两组子组件并放置在组件的两个不同部分中 let CreditCardForm icons fields gt div div div div icons div div div fields div let Cr
  • Angular.js:未捕获的错误,没有模块:myapp

    我也在尝试引导 angular js 项目 这是我的index html div p Loading p div
  • 在 Javascript 中动态添加事件处理程序

    我在使用 Javascript 时遇到了一个奇怪的问题 我得到的是一个特定格式的字符串 我将尝试用它创建一个表 该表每行只有一个单元格 字符串的格式为 每个单元格 行 需要显示内容 将传递给的参数onmouseover当用户将鼠标移动到显示
  • 使用 javascript 将 html 文本渲染为位图,无需服务器端代码

    我需要使用 javascript 代码来转换 html 中的文章 帖子 以便最终用户以位图的形式查看 有没有办法在没有服务器端代码的情况下做到这一点 example p testing text here p 您可以使用例如html2can
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • Backbone 中的加载栏

    我想显示加载消息 图标 直到列表中的所有项目都已呈现 这是我的示例中的 jsfiddle http jsfiddle net 9R9zU 58 http jsfiddle net 9R9zU 58 我尝试在 Feed 部分添加一个带有加载栏
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • 如果多个键是相同的 JS,则对对象中的值求和

    例如我有 5 个对象 row aa col 1 value 1 row bb col 2 value 1 row bb col 3 value 1 row aa col 1 value 1 row aa col 2 value 1 我想对值
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • React + Semantic-UI:在 UI MODAL 中使用表单

    在没有 React 的普通旧 Semantic UI 中 我已经能够毫无问题地将表单放入 Modal 中 使用 Semantic UI React 版本 我能够在模态中显示表单 但它并没有按照我期望的方式工作 例如 模态框显示后 模态框内的
  • 水平平滑滚动 100px

    Heyjo problem 一周以来我一直在寻找 javascript 或 jQuery 代码 以便在我的网站上实现滚动按钮 我失败的那一刻是按钮应该多次工作的时候 他的任务不是滚动到专用元素 而是应该向左滚动 例如 100px 此外 滚动
  • 通过多个回调优雅地传递“点击事件”

    当未登录的用户单击给定的按钮时 我想停止该事件 收集他的 oauth 收集他的电子邮件 如果我没有 然后执行该事件 我想用 javascript 来做所有事情 因为这会让事情变得更加简单 这就是我执行它的方式 我有两个问题 有没有更优雅的方
  • D3v6 嵌套图 - 嵌套 join()?

    我想可视化每个节点的 孩子 洞察力 我猜 D3v6 join 函数可以嵌套 不幸的是我找不到任何例子 下面的代码片段包含一个具有 3 个节点和子节点作为属性的outerGraph 到目前为止 这些孩子还没有被使用 相反 innerGraph
  • 为什么 JSON 结果可以是布尔值而不是对象或数组?

    From JSON 网站 http json org JSON 建立在两种结构之上 名称 值对的集合 在各种语言中 这被实现为对象 记录 结构 字典 哈希表 键控列表或关联数组 值的有序列表 在大多数语言中 这被实现为数组 向量 列表或序列
  • Jquery 两个字段的时间差(以小时为单位)

    我的表单中有两个字段 用户可以在其中选择输入时间 start time end time 我想在更改这些字段时重新计算另一个字段的值 我想做的是获取两次之间的小时数 例如 如果我的开始时间为 5 30 结束时间为 7 50 我想将结果 2

随机推荐

  • 6. 从0开始学ARM-异常及中断处理、异常向量表、swi

    七 异常及中断处理 异常向量表 swi 一 异常 Exception 异常是理解CPU运转最重要的一个知识点 几乎每种处理器都支持特定异常处理 中断是异常中的一种 有时候我们衡量一个操作系统的时候实时性就是看os最短响应中断时间以及单位时间
  • 第17课 微信小程序通过node获取用户openid:

    第17课 微信小程序通过node获取用户openid 调用 wx login 获取 临时登录凭证code 并回传到开发者服务器 调用 auth code2Session 接口 换取用户唯一标识 OpenID 和 会话密钥 session k
  • 11款常用的安全测试工具

    1 AppScan 一款安全漏洞扫描工具 支持Web和移动 现在安全测试做漏洞扫描非常适用 它相当于是 探索 和 测试 的过程 最终生成很直观的测试报告 有助于研发人员分析和修复通常安全测试工具用这个 扫描一些安全漏洞 用起来比较方便 网上
  • php request instance,TP5学习笔记 请求(request)变量

    可以通过Request对象完成全局输入变量的检测 获取和安全过滤 支持包括 GET POST REQUEST SERVER SESSION COOKIE ENV等系统变量 以及文件上传信息 检测变量是否设置 可以使用has方法来检测一个变量
  • linux 挂载磁盘 普通用户读写 --chatGPT

    问 mount 挂载共享磁盘 指定用户fly可以读写 gpt 要将共享磁盘挂载并授予用户 fly 读写权限 您可以使用 mount 命令结合合适的挂载选项 首先 您需要确保磁盘已经连接到系统上 然后 按照以下步骤进行操作 1 创建一个目标目
  • CPU 与 GPU 之间数据转换 cudaMemcpy

    显存上分配空间 CUDA SAFE CALL cudaMalloc void Dst d sizeof float3 totalPNum 显存上传输数据 CUDA SAFE CALL cudaMemcpy Dst d Srcdata0 h
  • HAProxy--理论--02--配置文件

    HAProxy 理论 02 配置文件 1 配置文件组成 1 global 设置全局配置参数 2 defaults 设置的默认参数 3 frontend 接收请求的前端虚拟节点 Frontend可以直接指定具体使用后端的backend 4 b
  • anaconda 激活环境 并 安装相关包 torch 安装matplotlib

    1 管理员身份 运行 anaconda prompt 2 激活环境 查看python版本 activate 环境名称 3 查看已经安装的包 4 安装所需的包 方法1 pip install matplotlib 如果太慢建议更换国内镜像源
  • vue中给dom元素绑定js原生onclick事件并获取data中定义的数据和调用函数

    onclick 执行的是 window 环境中的方法 所以 将 this 中的方法或data中定义的字段关联到 window 上即可 vue代码 mounted window customMethods this customMethods
  • MariaDB+SpringBoot 报错 Caused by: java.sql.SQLException: GSS-API authentication exception

    最近在搭建springboot mybatis mariadb 项目的时候遇到了如题的问题 搜索了一圈没找到合适的解决方法 因此记录下我的解决方案 希望对后来者有帮助 先说结论 重装MariaDB即可 1 环境和配置信息 开发环境 win1
  • 排序基础算法(一)—— 堆排序

    堆排序 前言 1 完全二叉树 2 大根堆和小根堆 3 堆排序原理 一 调整堆 二 建初堆 三 堆排序算法的实现 Java代码 前言 堆排序是一种树形选择排序 在排序过程中 将待排序的记录r 1 n 看成是一棵完全二叉树的顺序存储结构 利用完
  • ffmpeg基础(五) I帧B帧P帧

    一 I帧 关键帧 属于帧内压缩 你可以理解为这一画面的完整保留 解码的时候只需要本帧的数据就可以完成 因为它包含的是完整信息 特点 1 它是一个全帧压缩编码帧 将全帧图像进行JPEG压缩以及传输 2 解码的时候只需要通过I帧的数据就可以得到
  • C++primer Plus 第三章复习题

    1 为什么C 有多种整型 有多种整型 可以根据输出结果选择最合适的类型 比如年龄可以使用short 存储容量用long 2 声明与下述描述相符的变量 a short整型 值为80 short num 80 b unsigned int 整型
  • python时间相减_python 计算时间差,时间加减运算代码

    1 方便的计算两个时间的差 如两个时间相差几天 几小时 import datetime d1 datetime datetime 2009 3 23 d2 datetime datetime 2009 10 7 dayCount d1 d2
  • MsSQL数据备份与恢复---完全备份与增量备份

    文章目录 1 数据备份 1 1 数据备份的重要性 1 2 数据备份的分类 1 2 1 从物理与逻辑的角度分类 1 2 2 从数据库的备份策略角度分类 1 2 3 备份方式的比较 1 3 常见的备份方法 2 MySQL完全备份与恢复 2 1
  • 扩容 磁盘、pv、lv

    因虚似机上的磁盘空间不够了 试了下偏门的扩展方法 root hdss7 21 df h Filesystem Size Used Avail Use Mounted on devtmpfs 1 9G 0 1 9G 0 dev tmpfs 1
  • Datawhale&Git-Model:假设检验2-多元数值向量的检验

    作业 为研究东 中 西部各省市规模以上的企业发展状况 我们收集了各城市企业的主要经济指标 包括 总资产贡献率 资产负债率 流动资产周转次数 工业成本费用利润率 产品销售率 我们用变量 类别 定义了各类城市 其中1为东部城市 2为中部城市 3
  • openwrt单网口进不了登录界面

    图一 图二 图一是刷完固件后 图二是网线直连电脑的IP配置 进不了登录界面 也ping 不通 请教是什么原因
  • 使用命令恢复postgres数据库报错psql: FATAL: role "root" does not exist 解决方案

    因为是从其他地方备份出来的sql文件 如果直接用pgAdmin4因为格式问题报错input file appears to be a text format dump Please use psql 所以换用命令行执行 但是出现psql F
  • 如何使用vant库的loading组件

    第一步 main js文件引入下载的loading 全局引入ui组件 import Vant from vant import vant lib index css Vue use Vant 第二步 在vuex中定义全局变量loading