首页 > 编程语言 >uniapp 微信小程序分享内容页的连带bug

uniapp 微信小程序分享内容页的连带bug

时间:2024-12-18 16:30:47浏览次数:4  
标签:uniapp const index 微信 token return 加载 bug 页面

简单模拟,我有pages/index与pages-work/job-detail页面,pages/index 页面放的是job列表,

今天发现,从job-detail页面分享页面到聊天,然后从聊天点进去,再返回到index页面,数据列表没有加载,

 开始排查问题之后发现,直接从聊天页面进入小程序是优先加载该页面所在的包的内容,因为我这里是分包,所以主包没有优先加载,也就是说Index页面没有被加载,那么这就发现问题了,我才用的uni helper开发的,因为App.vue onLunch事件,异步获取token更新token,然后通过发布订阅来触发发布事件,index页面监听到用户信息更新之后便会去加载列表数据,那么,这里的问题就是onLunch事件,emit的事件,由于index页面没有被加载导致没有监听到事件,所以进来之后就是空的状态了,然后又因为onLunch 里异步获取token更新用户信息,那么在index的onLoad 中是没办法确保拿到token的,再因为index页面有watch监听userInfo,那么就不能使用常规的手段去处理,原因如下:

1. 因为Promise并行导致不能100%获取token,会导致接口失败弹窗

2. 造成list接口重复调用

解决方案:

 代码模拟展示如下:


const userStore = useUserStore() const { userInfo, choosePreferenceDone } = toRefs(userStore) // 处理分享进来不会刷新首页岗位列表的问题 const isLifeCycleRun = ref(true) const lifeRunStartSeconds = ref(0)

watch(userInfo, () => { if (isLifeCycleRun.value) return if (Date.now() - lifeRunStartSeconds.value < 2000) { console.log('重复的请求,规避掉') return }; nextTick(() => { emitter.emit('home-refresh') }) }) // 模拟监听storage的事件 function onStorageChange(callback: () => void) { let ms = 0 function loop() { if (uni.getStorageSync('TOKEN')) { callback() return } if (ms >= 2000) { console.log('error:获取token超时过2S') return } ms += 100 console.log('获取token...', ms) setTimeout(loop, 100) } loop() } onLoad(async () => { lifeRunStartSeconds.value = Date.now() listenRefresh() onStorageChange(() => { emitter.emit('home-refresh') isLifeCycleRun.value = false }) })

 

标签:uniapp,const,index,微信,token,return,加载,bug,页面
From: https://www.cnblogs.com/aursordev/p/18615288

相关文章

  • 初始化微信JSAPI
    /***初始化微信JS-SDK*@seehttps://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html*/import{getWxSignature}from'@/services/index';//获取签名的接口,服务端提供exportconstAPPID='xxxx';微信小程序的appid/***获取随机字符串......
  • 微信Native支付(Java)
    微信开放平台链接:Native下单_Native支付|微信支付商户文档中心导入依赖:<dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-java</artifactId><version>0.2.15</version></dependency> 配置ymlwx......
  • 在微信的H5页面不能下载如何解决?
    在微信的H5页面中,由于微信的安全策略,直接下载文件可能会受到限制。不过,你可以尝试以下几种方法来解决不能下载的问题:使用微信JS-SDK:微信提供了JS-SDK,它允许你在网页上调用微信的原生功能。你可以尝试使用其中的downloadFile接口来下载文件。但请注意,这需要用户授权,并且可能受......
  • 微信号太多?教你一招聚合多个号,消息全掌握!
    随着微信号的增多,管理多个账号变得越来越复杂。本文将详细介绍如何通过微信管理系统,聚合多个微信号,实现高效沟通。网页版:无需下载,扫码即用微信管理系统是一款电脑网页版的工具,它最大的优势在于无需下载任何软件,用户只需通过扫码即可登录系统,无需记忆复杂的密码。这种设计......
  • 微信开发api、微信视频号开发
    接口地址:http://api.videosapi.com/finder/v2/api/login/checkLogin接口说明获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功新设备登录平台,次日凌晨会掉线一次,重新登录时需调用获取二维码且传appId取码,登录成功后则可以长期在线登录成功后请保存appId与wxid的......
  • VideosApi接口-二次开发微信实用接口(视频号开发)
    VideosApi-微信协议是一种机器人接口,基于个人微信账号,提供开发API能力。该协议实现了90%的微信功能。本平台采用自研RPA响应框架,无需用户手机Root即可接入使用。通过使用OS原生定制化系统和原生支持的无障碍服务点击能力,实现非hook类侵入式修改。用户只需进行扫码授权即可接入......
  • 调试Debug,读,写 GPIO 寄存器(含实例代码)
    以STM32G070CBT6PA8为例注:下面调试界面的打开方式为下面图中调试界面中的寄存器仅用于指明具体位置,并不代表实际的实验现象本文涉及寄存器的读写操作,不熟悉的可以移步STM32寄存器读写操作-CSDN博客MODER寄存器GPIOA->MODER作用:配置PA8的......
  • Flutter OHOS harmony_fluwx 集成微信服务(二)
    harmony_fluwx集成微信服务(2)fluwx链接:https://gitee.com/almost777/fluwx接入功能分享图片,文本,音乐,视频等。支持分享到会话,朋友圈以及收藏.微信支付.在微信登录时,获取AuthCode.拉起小程序.订阅消息.打开微信.从微信标签打开应用初始化注册WxAPIregisterWxApi(ap......
  • 【精品毕设推荐】基于微信小程序的自修室预约系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行......
  • 四大跨平台开发框架深度解析——uniapp、uniapp-X、React Native与Flutter
    引言随着移动互联网的飞速发展,跨平台开发框架成为了开发者们关注的焦点。这些框架旨在通过编写一套代码,实现多个平台的应用开发,从而大幅提高开发效率和降低维护成本。本文将深入剖析uniapp、uniapp-X、ReactNative和Flutter这四个主流的跨平台开发框架,探讨它们的优缺点及......