如何使用vant库的loading组件

第一步,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);
})

完毕。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
vant 组件中的 Table 表格组件是一个高效、灵活、易用的数据展示组件,可以在 web 应用程序中方便地展示表格数据。 使用步骤如下: 1. 安装 vant 组件:可以通过 npm install vant 命令进行安装。 2. 引入 vant 组件:在需要使用 Table 表格组件的页面中引入 vant 组件。 3. 引入 Table 组件:在需要使用 Table 表格组件的页面中引入 Table 组件。 4. 在页面中使用 Table 组件使用 Table 组件的时候需要传入一些参数来指定表格的数据源、列定义、分页等相关信息。 以下是一个简单的 Table 表格组件使用示例: ``` <template> <van-table :columns="columns" :data="tableData" :loading="loading" :total="total" :page-size="pageSize" :current-page="currentPage" @change="handleTableChange" /> </template> <script> import { Toast, Table } from 'vant'; export default { components: { [Table.name]: Table, }, data() { return { columns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, { title: '地址', key: 'address' }, ], tableData: [], loading: true, total: 0, pageSize: 10, currentPage: 1, }; }, mounted() { this.loadTableData(); }, methods: { async loadTableData() { try { const res = await fetch('/api/table-data'); const json = await res.json(); this.tableData = json.list; this.total = json.total; } catch (e) { console.error(e); Toast.fail('加载数据失败,请稍后重试!'); } finally { this.loading = false; } }, handleTableChange({ current }) { this.currentPage = current; this.loadTableData(); }, }, }; </script> ``` 在上面的示例中,我们通过 columns 属性定义了表格的列,通过 data 属性指定了表格的数据源,通过 loading 属性指定了表格是否处于加载状态,通过 total 属性指定了表格数据的总数,通过 pageSize 和 currentPage 属性指定了表格的分页信息。同时使用 @change 事件监听表格的分页切换事件,当分页信息发生变化时重新加载表格数据。 需要注意的是,Table 组件的数据源需要是一个数组,其中每个元素代表一行数据,每个元素的属性名需要与 columns 中定义的 key 属性相对应。如果数据源比较大,需要进行分页,可以通过服务器端接口返回分页相关信息,然后在前端根据分页信息进行数据请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值