前端项目,个人笔记(六)【无限滚动 + 拦截器】

目录

1、无限滚动

2、使用pinia进行用户数据持久化

3、完善个人笔记三中的拦截器

请求拦截器:

响应拦截器:


1、无限滚动

使用elementplus中提供的:

代码:

<div class="body" v-infinite-scroll="load" >
        <!-- 商品列表-->
        <GoodsItem v-for="good in goodList" :good="good" :key="good.id"></GoodsItem>
</div>

load函数实现:

const load = async () => {  
  // 获取下一页的数据
  reqData.value.page++
  console.log(reqData.value.page)
  const res = await getSubCategoryAPI(reqData.value)
  //新加载的数据与老数据进行拼接合并
  goodList.value = [...goodList.value, ...res.result.items]  
}

当所有数据都加载结束后,需要停止加载:

使用:

<div class="body" v-infinite-scroll="load" :infinite-scroll-disabled="disabled">
        <!-- 商品列表-->
        <GoodsItem v-for="good in goodList" :good="good" :key="good.id"></GoodsItem>
</div>

disabled值【true/false】实现:

const disabled = ref(false);
const load = async () => {
  console.log('加载更多数据咯')
  // 获取下一页的数据
  reqData.value.page++
  const res = await getSubCategoryAPI(reqData.value)
  //新加载的数据与老数据进行拼接合并
  goodList.value = [...goodList.value, ...res.result.items]
  // 加载完毕 停止监听
  if (res.result.items.length === 0) {
    disabled.value = true
  }
}

关于无限滚动的其他属性,可自行尝试~


2、使用pinia进行用户数据持久化

        为什么要进行持久化,因为在我们进行登录后,用户数据存在,页面已刷新,用户数据就没了,就会又呈现一个未登录的状态,因此需要用户数据持久化~

  • 安装:npm i pinia-plugin-persistedstate
  • 修改main.js内容:
  • 接口调用处【pinia封装的这里】:

效果:


3、完善个人笔记三中的拦截器

请求拦截器:

// 一般会进行token身份验证等
http.interceptors.request.use(config => {
  const userStore = useUserStore();
    const token = userStore.userInfo.token;
    if(token){
        config.headers.Authorization = `Bearer ${token}`
    }
  return config
}, e => Promise.reject(e))

请求带上token

响应拦截器:

// 一般进行错误的统一提示,token失效的处理等
http.interceptors.response.use(  
  response => {  
    // 对响应数据做点什么  
    return response.data;  
  },  
  error => {  
    if (error.response) {  
      // 请求已发出,服务器也响应了状态码,但状态码不在 2xx 范围内  
      //统一错误提示
        ElMessage({
          type: 'error',
          message: e.response.data.message
      })
      //401token失效处理
      const userStore = useUserStore();
      if(e.response.status === 401){
          userStore.clearUserInfo()
          // 跳到登录页
          router.push('/login')
      }
      return Promise.reject(error.response);  
    }  
      
    // 处理网络错误等  
    return Promise.reject(error.message || 'Error');  
  }  
);

下期见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【复现】某指挥调度管理平台 SQL注入漏洞_66

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 该平台提供强大的指挥调度功能&#xff0c;可以实时监控和管理通信网络设备、维护人员和工作任务等。用户可以通过该平台发送指令…

积鼎CFD发动机燃烧仿真,实现航空航天发动机内部燃烧过程的流体仿真

航空航天发动机中的燃烧现象是一种复杂的物理化学过程&#xff0c;包括流动、雾化、相变、传热传质、点火熄火、化学反应、污染物排放、热声振荡和冷却等多个过程&#xff0c;加上燃烧的非定常性和高湍流度&#xff0c;使得准确模拟燃烧过程变得异常困难。在传统CFD模拟需要考虑…

Docker在Mac上轻松部署RabbitMQ:从拉取镜像到创建运行带管理界面的容器全攻略

1、去官网下载docker 安装&#xff1a;把图标拉到应用程序即可 https://docs.docker.com/desktop/install/mac-install/ 2、拉取rabbitmq镜像 docker pull rabbitmq:3.8-management 3、创建并启动容器&#xff0c;同时设置环境变量以创建用户和密码 docker run -d --name m…

python中医学习服务管理系统flask-django-php-nodejs

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存在工作…

YOLOV5 部署:cuda和cuDNN安装

1、前言 TensorRT 的安装需要配合cuda的使用,所以这里需要安装cuda和cudnn用于加速推理 TensorRT 就是神经网络专门用来加速的框架 之前训练yolov5项目的时候,我们只是配置了torch的GPU环境,没有专门安装cuda和cudnn,因为简单的训练、推理没必要cuda加速。 torch的GPU配置…

MINT: Detecting Fraudulent Behaviors from Time-series Relational Data论文阅读笔记

2. 问题定义 时间序列关系数据&#xff08;Time Series Relation Data&#xff09; 这个数据是存放在关系型数据库中&#xff0c;每一条记录都是泰永时间搓的行为。 更具体地&#xff0c;每条记录表示为 x ( v , t , x 1 , x 2 , … , x m − 2 ) x (v,t,x_1,x_2,\dots,x…

【JS】浅谈Promise

Promise 前言一、Promise是什么&#xff1f;二、为什么用Promise&#xff1f;2.1解决回调地狱2.2 集中错误处理2.3代码解耦和复用 三、做什么&#xff1f;四、原型方法和实例方法&#xff1f;五、应用场景&#xff1f; 前言 promise是es6的新规范&#xff0c;它是一种异步解决…

粗糙度对应表,觉得挺实用

粗糙度新老标准经常会遇到&#xff0c;分享给大家

大数据分析师特训营介绍

大数据分析师是做什么的&#xff1f; 数据分析师是在不同行业中&#xff0c;专门从事行业数据搜集、整理、分析&#xff0c;并依据数据做出行业研究、评估和预测等工作的。与传统的数据分析师相比&#xff0c;大数据分析师要学会打破信息孤岛利用各种数据源&#xff0c;在海量…

ByteTrack多目标跟踪——YOLOX详解

文章目录 1 before train1.1 dataset1.2 model 2 train2.1 Backbone2.2 PAFPN2.3 Head2.3.1 Decoupled Head2.3.2 anchor-free2.3.3 标签分配① 初步筛选② simOTA 2.3.4 Loss计算 项目地址&#xff1a; ByteTrack ByteTrack使用的检测器是YOLOX&#xff0c;是一个目前非常流行…

Ceres求解非线性优化问题步骤与示例

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 在计算机视觉和机器人领域&#xff0c;经常需要解决非线性优化问题来估计相机姿态或运动模型。Ceres Solver是一个开源的C库&#xff0c;专门用于解决最小二乘问题&am…

Linux系统如何使用tcpdump实时监控网络速度:方法与技巧解析

在网络管理和故障排查中&#xff0c;了解网络速度是一个重要的环节。而tcpdump&#xff0c;作为一个强大的网络数据包分析工具&#xff0c;不仅可以用于分析数据包的内容&#xff0c;还能用于实时监控网络速度。本文将介绍Linux系统如何使用tcpdump来实时监控网络速度。 首先&…

智能型程控直流电子负载特点和特性

智能型程控直流电子负载是高精度、高稳定性的电源测试设备&#xff0c;主要用于对电源、电池、充电器等直流电源设备的输出性能进行测试。它具有以下特点和特性&#xff1a; 智能型程控直流电子负载采用先进的控制算法和高精度的ADC&#xff0c;能够实现对电流、电压、功率等参…

【EOJ】2985.圆和正方形

单点时限: 2.0 sec 内存限制: 256 MB 小王首先在平面上画一个边长为 K 的正方形 S1&#xff0c;然后又画一个 S1 的内切圆 C1&#xff0c;这算做一次操作。然后接着画 C1 的一个内切正方形 S2&#xff0c;和 S2 的一个内切圆 C2&#xff0c;这算第二次操作。他一直进行了 K 次…

前端学习笔记 | JS进阶

一、作用域 1、局部作用域 &#xff08;1&#xff09;函数作用域 &#xff08;2&#xff09;块作用域 let和const会产生块作用域 &#xff0c;而var不会产生块作用域 2、全局作用域 script标签和js文件的【最外层】变量 3、作用域链 本质&#xff1a;底层的变量查找机制 4、JS…

AI时代,我靠2个页面,一个AI产品开始变现

大家好&#xff0c;我是AI时间线的作者&#xff0c;AI时间线这个产品是我利用过年期间半天时间开发出来的一个产品。 产品地址:http://www.ai-timeline.top/ 核心功能主要是根据关键词生成时间线&#xff0c;大家可以看看产品上使用教程&#xff0c;非常简单 当然幸运的是目前产…

解决:springboot项目访问hdfs文件提示guava版本不兼容

1、问题描述 版本说明&#xff1a;我用的hadoop版本&#xff1a;3.1.3 项目可以正常启动&#xff0c;但是调用访问hdfs的服务时候报错,报错消息如下&#xff1a;com.google.common.base.preconditions.checkArgument(ZL java/lang/String;Ljava/lang/Object:)V 原因分析&#x…

安科瑞保护测控产品在新能源行业中应用【峰谷套利 动态扩容 需求侧响应】

背景 2 月 10 日发布《关于完善能源绿色低碳转型体制机制和措施的意见》明确&#xff0c;鼓励建设源网荷储一体化、多能互补的智慧能源系统和微电网。 分布式光伏优势 近年来&#xff0c;随着光伏产业规模不断扩大&#xff0c;技术迭代升级不断加快&#xff0c;智能制造迅速推…

如何让工作计划显示在桌面上面?电脑桌面日程安排软件

作为一名忙碌的上班族&#xff0c;我每天都要面对繁多的工作任务&#xff0c;如何确保每一项任务都能按时完成&#xff0c;避免遗漏或忘记&#xff0c;成为了我必须面对的挑战。提前列出工作计划固然有效&#xff0c;但如果能将这些计划直接显示在电脑桌面上&#xff0c;无疑将…

uniapp_微信小程序客服

一、调用api 二、代码 <button open-type"contact">客服</button> 三、小程序后台添加客服人员就行