Vue Vant应用 loading加载

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:vant应用-loading加载

目录

Loading加载

引入组件

调用

Axios拦截器

请求增加参数

响应增加参数

总结


Loading加载

使用vant toast轻提示

引入组件

在DetailView.vue中引入Toast,示例如下:

import { ImagePreview, Toast} from 'vant'

调用

在created生命周期函数中,调用loading加载提示。

Duration为0 设置load提示不消失,待数据加载完成后,设置隐藏

示例如下:

created () {
    Toast.loading({
      message: '加载中...',
      forbidClick: true,
      duration: 0
    })
    // 当前匹配的路由
    // console.log('created', this.$route.params.id)
    // axios 利用 id发请求到详情接口,获取详情数据,布局页面
    http({
      url: `/api/gateway?filmId=${this.$route.params.id}&k=6027054`,
      headers: {
        'X-Host': 'mall.film-ticket.film.info',
        'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'
      }
    }).then(res => {
      // console.log(res.data)
      this.filmInfo = res.data.data.film
      // 隐藏
      Toast.clear()
    })
  }

Axios拦截器

如果每个页面都写同样的load很麻烦,可以在拦截器中处理。

在util/http.js中增加请求前所带的参数,比如请求cookie.

增加全局load:导入库、增加load窗口;

响应之后在拦截,清除load;

失败请求也需要清除掉load。

示例如下:

import axios from 'axios'
import { Toast } from 'vant'

const http = axios.create({
  baseURL: '',
  timeout: 100000,
  headers: {
    'X-Host': 'mall.film-ticket.film.list',
    'X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777"}'
  }
})
// 在发请求之前拦截 -- showLoading
http.interceptors.request.use(function (config) {
  Toast.loading({
    message: '加载中...',
    forbidClick: true,
    duration: 0
  })
  return config
}, function (error) {
  return Promise.reject(error)
})

// 在成功之后拦截 -- hideLoading
http.interceptors.response.use(function (response) {
  // 响应结束 清除load
  Toast.clear()
  return response
}, function (error) {
  // 失败也需要清除load
  Toast.clear()
  return Promise.reject(error)
})

export default http

请求增加参数

响应增加参数

总结

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:vant应用-loading加载

### Vue Vant 实现上滑加载更多数据功能 为了实现在Vue项目中使用Vant组件库完成上滑加载更多数据的功能,下面提供了一个详细的实现方法。 #### 安装依赖 首先需要安装`vant`包。这可以通过npm或yarn来完成: ```bash npm install vant ``` 或者 ```bash yarn add vant ``` #### 引入组件 按照最佳实践建议只引入所需的组件以减少打包体积[^2]。对于列表滚动到底部自动加载新项的需求来说,通常会用到`List`以及配合使用的其他UI组件如`Cell`等展示每一项的内容。 #### 组件注册与模板编写 接下来是在单文件组件内注册并使用这些组件。这里给出一个简化版的例子用于解释如何设置监听事件处理函数从而达到分页获取远程资源的目的。 ```html <template> <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad" > <van-cell v-for="(item, index) in list" :key="index"> {{ item }} </van-cell> </van-list> </template> <script setup> import { ref } from 'vue'; // 导入所需组件 import { List as VanList, Cell as VanCell } from 'vant'; const loading = ref(false); const finished = ref(false); let page = 1; const pageSize = 10; // 假设这是从服务器端获得的数据源 function fetchData() { return new Promise((resolve) => { setTimeout(() => resolve(Array.from({ length: pageSize }, (_, i) => `Item ${i + (page - 1) * pageSize}`)), 1000); }); } async function onLoad() { try { const data = await fetchData(); if (!data || !data.length) { finished.value = true; // 如果没有更多的数据,则标记已完成 } list.push(...data); // 将新的条目追加至现有数组后面 loading.value = false; // 加载完成后关闭加载指示器 page += 1; // 更新请求参数中的当前页面编号以便下次调用API时传递给服务端 } catch(error){ console.error('Failed to fetch more items', error); loading.value = false; } } </script> ``` 此代码片段展示了怎样利用`v-model`绑定属性控制加载状态,并通过监听`@load`事件触发异步操作去拉取额外的信息填充视图。每当用户滚动接近底部的时候就会激活这个回调机制进而执行相应的业务逻辑[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值