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

淘宝网做网站贵阳专业建网站

淘宝网做网站,贵阳专业建网站,咨询公司属于什么行业,淄博网络运营公司目录 前言1. 变量(不生效)2. 延迟(生效) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中,使用 onShow() 钩子来监听页面显示&#xff0…

目录

  • 前言
  • 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(),刷新数据

http://www.yayakq.cn/news/762038/

相关文章:

  • 网站提示页面设计域名普通词注册
  • 购物网站开发历史华辰合肥企业展厅设计公司
  • 余姚外贸网站建设上海中艺建设集团网站
  • 中国建设教育网官网是什么网站营销网
  • 汕头门户网站中国建设银行内部网站
  • 网站浮窗制作秀洲区建设中心小学网站
  • 网站悬浮qq福建省建设人才与科技发展中心网站首页
  • wordpress模板建站教程网站域名 没有续费
  • 南京公司网站制作教育培训青岛学网站建设的学校
  • 微信对接网站大航母网站建设与服务
  • 用自己的电脑建设网站湖北专业的网瘾学校哪家口碑好
  • 快站微信网站制作如何查看网站建设时间
  • 鹤壁建设网站推广网站 设计 分辨率
  • 网站群建设方案6大学网站模板下载
  • 苏州网站小程序app开发公司移动互联网营销的目标是( )
  • 做简历的网站叫什么软件云闪付小程序开发平台
  • 商城网站建站方案利用模板建网站
  • 贵阳网站制作维护网站用什么语言好
  • 大尺度做爰床视频网站百度搜索结果优化
  • 网站改版的目的设计说明怎么写
  • 食品网站建设客户需求调查表上海制作网站的网站
  • 国外做枪视频网站大连看妇科哪家医院好
  • 创建一个网站一般步骤有哪些莱芜搜狗推广提供
  • 手表东莞网站建设技术支持外贸网站建设评价
  • 网站店铺分布图怎么做在线制作图片及图片处理工具
  • 整套网站设计网站推广的策略有哪些
  • 开发一个网站能赚多少钱重庆森林讲的什么内容
  • 银铃建设通官方网站空气炸锅做糕点的网站
  • 做企业网站类型网站代理运营
  • 成立公司在什么网站用python写一个简单的网站