当前位置: 首页 > news >正文

Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!

目录

  • 前言
  • 1. 变量(不生效)
  • 2. 延迟(生效)

前言

🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF

在 Uniapp 中,使用 onShow() 钩子来监听页面显示,从而在页面返回时刷新数据

例如:

onShow() {this.getLastSubmission(); // 重新请求数据
}

但这样会导致 初次进入页面 时 onShow() 也会执行一次 getLastSubmission(),而 onLoad() 也会调用它,导致 多次请求,带来性能问题和不必要的 API 调用

初次进入时 只调用一次 getLastSubmission(),返回页面时也只会调用 getLastSubmission() 以刷新数据
避免 onShow 和 onLoad 同时触发 getLastSubmission()

在 Uniapp 的页面生命周期中:

  • onLoad() 仅在页面首次创建时调用一次。
  • onShow() 每次页面 显示 时都会触发,包括:
    首次进入页面
    从其他页面返回

如果 onLoad() 和 onShow() 都调用 getLastSubmission(),那么:
初次进入:onLoad() 调用 getLastSubmission(),然后 onShow() 立即执行,导致 请求了两次
返回页面:onShow() 再次调用 getLastSubmission(),符合预期

需要解决 初次进入时调用两次的问题

在这里插入图片描述

1. 变量(不生效)

定义 firstLoad 变量,初次进入页面时设为 true。
onLoad() 执行 getLastSubmission(),但 onShow() 第一次不执行。
onShow() 仅在 firstLoad = false 后执行,避免初次进入时的重复调用

export default {data() {return {lastSubmission: null, firstLoad: true // 标记是否是第一次进入};},onLoad() {this.getLastSubmission(); // 初次加载时调用},onShow() {if (!this.firstLoad) {this.getLastSubmission(); // 仅在返回时调用} else {this.firstLoad = false; // 标记为已加载,后续 onShow 可执行}},methods: {async getLastSubmission() {try {const res = await getSelf();if (res?.data) {this.lastSubmission = res.data;} else {this.lastSubmission = null;}} catch (error) {this.lastSubmission = null;}}}
};

2. 延迟(生效)

核心思路:

在 onLoad() 先调用 getLastSubmission(),但不立即设置 loaded = true.通过 setTimeout() 稍微延迟 loaded,确保 onShow() 触发时不会误调用

export default {data() {return {lastSubmission: null, loaded: false // 标记是否已经加载过};},onLoad() {this.getLastSubmission().then(() => {setTimeout(() => {this.loaded = true; // 延迟标记 loaded,防止 onShow 立即执行}, 100); });},onShow() {if (this.loaded) {this.getLastSubmission(); }},methods: {async getLastSubmission() {try {const res = await getSelf();if (res?.data) {this.lastSubmission = res.data;} else {this.lastSubmission = null;}} catch (error) {this.lastSubmission = null;}}}
};

初次进入:
onLoad() 调用 getLastSubmission(),但 loaded 需要 100ms 才变 true。onShow() 立即触发,但 loaded = false,不会调用 getLastSubmission()

返回页面:
onShow() 触发 getLastSubmission(),刷新数据

相关文章:

Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!

目录 前言1. 变量(不生效)2. 延迟(生效) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中,使用 onShow() 钩子来监听页面显示&#xff0…...

《论数据湖技术及其应用》审题技巧 - 系统架构设计师

论题写作框架 一、考点概述 “数据湖技术及其应用”这一论题主要考察的是软件测试工程师对于前沿数据存储与处理技术的理解及其在软件开发项目中的实际应用能力。具体而言,该论题涵盖了以下几个核心考点: 软件项目管理与开发经验 :要求考生…...

C++蓝桥杯基础篇(八)

片头 嗨~小伙伴们,大家好!今天我们一起来学习C蓝桥杯基础篇(八),练习相关字符串的习题,准备好了吗?Are you ready? Lets go! 第1题 字符串中的数字个数 这道题,我们用字符数组或者…...

AI 实战 - pytorch框架基于retinaface实现face检测

pytorch框架基于retinaface实现face检测 简介模型结构MobileNet-0.25SSH结构Head结构 Anchor编解码 环境开发环境 数据简介 训练测试参考 简介 RetinaFace是在RetinaNet基础上引申出来的人脸检测框架,所以大致结构和RetinaNet非常像。 主要改进:1.Mobi…...

如何在PHP中实现API版本管理:保持向后兼容性

如何在PHP中实现API版本管理:保持向后兼容性 在现代Web开发中,API(应用程序编程接口)是连接前端和后端的关键桥梁。随着业务需求的不断变化,API的版本管理变得尤为重要。良好的版本管理策略不仅能够确保新功能的顺利引…...

Docker Compose企业示例

利用容器编排完成haproxy和nginx负载均衡架构实施 1.mkdir docker.test 2.touch haproxy.yml 3.mkdir /var/lib/docker/volumes/conf 4.dnf install haproxy -y --downloadonly --downloaddir/xixi:下载内容到/xixi目录下 5. rpm2cpio haproxy-2.4.22-4.el9.x8…...

TMS320F28P550SJ9学习笔记6:SCI所有寄存器__结构体寄存器方式配置 SCI通信初始化__库函数发送测试

继续学习如何使用结构体寄存器的方式配置这款单片机的外设,这里配置SCI通信的初始化 但SCI gpio 的初始化还是调用的库函数比较方便,它的发送部分页调用了库函数 有关收发方面的逻辑,我会在之后重新自己写一次 文章提供测试代码讲解、完整…...

详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!

以下是基于脚本实现MySQL一键安装与配置的详细方案,涵盖Linux主流系统(CentOS/Ubuntu)及Windows环境,结合自动化部署与高可用性扩展,旨在提升运维效率: 一、Linux系统(CentOS 7.x)一…...

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外,平台还支持用户自行上传视频文件,也可将上传的点播…...

增删改查 数据下载 一键编辑 删除

index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…...

【Go学习实战】03-2-博客查询及登录

【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…...

回溯算法(C/C++)

目录 一、组合问题 组合 组合剪枝 组合总和 III​编辑 组合总和​编辑 组合总和 II 电话号码的字母组合​编辑 二、分割问题 分割回文串 复原 IP 地址 三、集合问题 子集 子集 II 非递减子序列 四、排列问题 全排列 全排列 II 五、棋盘问题 N 皇后 课程&#x…...

物联网智慧农业一体化解决方案-可继续扩展更多使用场景

在智慧农业中,从种子、施肥、灌溉、锄地、农具管理、日常照料到蔬菜档案管理,以及与客户、供应商、市场的对接,可以通过物联网(IoT)、大数据、人工智能(AI)、区块链和云计算等技术,构建一个从生产到销售的全流程数字化、智能化农业生态系统。以下是实现方案和技术路径的…...

Jackson 详解

目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一&#xff0c;广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能&#xff0c;支持注解、模块化设计和多种数据格式&#xff08;如 XML、YAML&#xff09;。本文将详细介…...

游戏引擎学习第143天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并规划今天的内容 目前&#xff0c;我们正在进行声音混合的开发。我们已经写好了声音混合器&#xff0c;并且已经实现了一些功能&#xff0c;比如声音流播放和音量插值。过去一周我们做了很多工作&#xff0c;进展非常快。不…...

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…...

Nginx解决前端跨域问题

1. 理解 CORS 和同源策略 1.1 同源策略 同源策略是一种浏览器安全机制&#xff0c;用于阻止不同源&#xff08;不同域名、协议或端口&#xff09;的 Web 应用相互访问数据。它确保了 Web 应用的隔离性&#xff0c;防止恶意网站访问用户数据或执行不安全的操作。 同源策略下&…...

ReferenceError: assignment to undeclared variable xxx

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器&#xff0c;可以让用户愉快的从繁琐的工作中解放出来&#xff0c;其本质是对键盘和菜单的操作序列的录制&#xff0c;并不会识别文件的内容&#xff0c;属于无差别无脑执行。 特别是对一些有规律的重复按键动作&#xff0c;…...

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…...

如何高效使用大麦网抢票脚本:5分钟快速上手终极指南

如何高效使用大麦网抢票脚本&#xff1a;5分钟快速上手终极指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪的演唱会门票而烦恼吗&#xff1f;面对秒光的票源和昂贵的黄牛票…...

8款投屏软件亲测对比:哪款才是真正的“良心之选”?

市面上的投屏软件多如牛毛&#xff0c;但真正好用的没几个。为了帮大家避坑&#xff0c;我亲自下载、安装、使用了8款常见的投屏工具&#xff0c;从是否收费、有无广告、功能丰富度、兼容性、实际体验五个维度做了深度测试。下面是我的真实使用感受&#xff0c;希望对你有帮助。…...

ncmdump终极解决方案:解锁网易云音乐NCM格式的完整指南

ncmdump终极解决方案&#xff1a;解锁网易云音乐NCM格式的完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在其他设备播放而烦恼吗&#xff1f;ncmdump工具使用为你提供了完美的NCM格…...

利用Taotoken为开源项目提供可配置的AI功能模块

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken为开源项目提供可配置的AI功能模块 为开源项目集成人工智能能力&#xff0c;正成为提升项目实用性和吸引力的有效方式…...

开源项目文档自动化验证:gate-of-oss 守护 README 与代码一致性

1. 项目概述&#xff1a;一个开源项目的“守门人” 在开源的世界里&#xff0c;项目仓库的README文件就像是项目的“门面”和“说明书”。然而&#xff0c;随着项目迭代&#xff0c;依赖项更新、构建脚本变动、环境配置要求变化是家常便饭。你有没有遇到过这样的场景&#xff1…...

绝地求生罗技鼠标宏终极教程:5分钟实现完美压枪

绝地求生罗技鼠标宏终极教程&#xff1a;5分钟实现完美压枪 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的后坐…...

第5章 集群初始化

本章说明: 集群初始化是 Kubernetes 部署过程中最核心的一步。本章使用 kubeadm 在 master01 节点上初始化高可用集群控制平面。初始化时需要指定 VIP(192.168.3.59:6443)作为控制平面统一入口,这样后续加入的其他 Master 节点和 Worker 节点都通过 VIP 访问 API Server,…...

Kubernetes二进制文件管理器KBM:高效管理kubectl、helm等工具版本

1. 项目概述&#xff1a;为什么我们需要一个Kubernetes二进制文件管理器&#xff1f; 如果你和我一样&#xff0c;长期在多个Kubernetes集群、不同版本的环境之间切换&#xff0c;或者需要为CI/CD流水线、离线环境准备特定版本的 kubectl 、 helm 、 kustomize 等工具&am…...

YOLO26缝合A2-Nets注意力:双重注意力机制在复杂遮挡场景的奇效

本文系统解析A2-Nets双重注意力机制在YOLO目标检测框架中的应用潜力与实战价值。通过深入对比YOLOv10、YOLO26与YOLOv9的架构差异,结合A2-Nets二阶注意力池化与自适应特征分配的核心原理,揭示双重注意力机制在复杂遮挡场景下提升检测精度的根本原因。文章同步涵盖TensorRT部署…...

AI应用开发利器:NeuroAPI网关统一管理多模型调用与部署实战

1. 项目概述&#xff1a;一个面向AI应用开发的API网关最近在折腾AI应用开发的朋友&#xff0c;估计都绕不开一个头疼的问题&#xff1a;模型管理。今天想试试Claude&#xff0c;明天项目需要接入GPT-4&#xff0c;后天可能又要调用一个开源的Llama模型。每个模型都有自己的API地…...