首页 > 编程语言 >uni-app小程序(快手、抖音)getCurrentPages使用坑位记录2

uni-app小程序(快手、抖音)getCurrentPages使用坑位记录2

时间:2024-10-18 21:21:09浏览次数:1  
标签:index const 快手 app 抖音 uni pages 路由

前情

uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,我主要负责抖音和快手端小程序。

坑位

公司历史原因项目有APP端小程序端,但并不使用uni-app的一端发布所有平台,各端都有它的开发负责人,只有我负责的快手和抖音是基于一套代码发布多端的,因有需求是APP先行的,而基于uni-app的代码利用率还算是高的,于是这一次需求并不是重新从0到1开始开发,而是直接基于App的代码来做调整适配快手抖音端,去除掉一些App特有代码和在解决了一些样式兼容问题后,发现在快手小程序端其中带过滤筛选功能的商品列表显示异常,怎么切换筛选条件都没有更新商品列表。

Why?

在App和抖音小程序端上功能都是正常的,控制台也没有报错,同时也发现接口也是有发起的,于是开始去细看代码,发现App开发者为了组件复用,在商品列表组件有一处逻辑会根据当前是什么路由就请求对应接口,代码如下:

const getCurrentRoute = (index = 1) => {
	const pages = getCurrentPages()
	const currentPage = pages[pages.length - index]
	const currentRoute = currentPage.route; 
	return currentRoute;
}

const getList = (params) =>{
	const curRoute = getCurrentRoute();
	if(curRoute === 'pages/home/index'){
		getHotList({...params})
	}else{
		getGoodsList({...params})
	}
}

当时看到这个代码我是比较反感的,为什么要根据路由去判断请求不同接口,直接外面传一个特定的key判断是哪一个页面不是更稳定,虽然代码看着不是很认同,但按理说这功能也不至于一端能用一端不能用,开始怀疑是不是快手端获取路由栈方法getCurrentPages有什么问题,为了定位错误,我通过日志打印查看路由获取是否正确,代码如下:

const getCurrentRoute = (index = 1) => {
	const pages = getCurrentPages()
	console.log('---- getCurrentRoute ----:',  curRoute);
	const currentPage = pages[pages.length - index]
	const currentRoute = currentPage.route; 
	return currentRoute;
}

至此才发现问题所在,在抖音端打印的路由和快手端打印的路由有一小点区别,快手端会在开头多一反斜杠:

解决方案

方案1:比较取巧偷懒的方法就是从返回看pages/home/index是二个都有的,那只判断路由是否包含pages/home/index即可,示例代码如下:

const getList = (params) =>{
	const curRoute = getCurrentRoute();
	if(curRoute.includes('pages/home/index')){
		getHotList({...params})
	}else{
		getGoodsList({...params})
	}
}

方案2:重写不通过路由判断,通过从外面传key判断当前组件是用在哪一个页面,来请求不同的接口,个人觉得此种方式是最稳妥的,也是我推荐的。

思考

小于uni-app跨平台的项目,虽然uni-app已经处理了绝大部分的平台差异问题,但是或多或少会有一些是平台处理漏的,遇到这种一端可以另一端不行的问题,可以先考虑是不是使用了一些平台有差异的API,手动把差异抹平即可,对于实在官方都说明有差异的,那就用好uni-app的条件编译来处理吧。

标签:index,const,快手,app,抖音,uni,pages,路由
From: https://www.cnblogs.com/xwwin/p/18475071

相关文章

  • 基于51单片机的智能台灯光照坐姿检测PWM红外无线手机蓝牙/WiFi/WiFi视频监控APP设计C0
    51单片机+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01N51+蓝牙APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01B51+WIFI-APP控制+人走灯灭+光敏AD采集+自动+手动+10档调节+坐姿监测+蜂鸣器+OLED屏/C01W51+视频监控+WIF......
  • 基于51单片机宠物自动喂食器定时时钟提醒加水水位无线手机蓝牙/WiFi/WiFi视频监控APP
    51单片机+时钟+校时+喂食+水位+加水喂水+三餐3定时+声光提醒+OLED屏+手动+自动/C16N51+蓝牙APP控制+时钟+校时+喂食+水位+喂水+三餐3定时+声光+OLED屏+手动+自动/C16B51+WIFI-APP控制+时钟+校时+喂食+水位+喂水+三餐3定时+声光+OLED屏+手动+自动/C16W51+视频监控+WIFI+时钟+......
  • 基于51单片机智能输液器报警液位温度检测电机控制无线手机蓝牙/WiFi/WiFi视频监控APP
    51单片机+点滴检测+药水液位+温度+温控+电机控制+上下限+按键+声光提醒+OLED屏/C24N51+蓝牙APP控制+点滴检测+药水液位+温度+温控+电机+上下限+按键+声光+OLED屏/C24B51+WIFI-APP控制+点滴检测+药水液位+温度+温控+电机+上下限+按键+声光+OLED屏/C24W51+视频监控+WIFI+点滴......
  • SpringBoot+Vue+Uniapp私家车位共享小程序系统(源码+lw+部署文档+讲解等)
    项目运行截图技术框架后端采用SpringBoot框架SpringBoot是一个用于快速开发基于Spring框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。SpringBoot通过自动化配置和约定大于配置的......
  • 抖音商品详情API接口如何使用
    使用抖音商品详情API接口,一般需要以下步骤:注册抖音开放平台账号:访问抖音开放平台,进行开发者账号的注册。这一步是后续获取API访问权限的基础。创建应用,在开放平台的控制台中创建一个新的应用,填写相关的应用信息,如应用名称、应用描述等。获取API密钥:成功注册应用......
  • java+vue计算机毕设高校图书馆借阅管理系统app【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和移动互联网的普及,高校学生的学习和生活方式正经历着深刻的变革。图书馆作为知识传播和学术研究的重要场所,其管理与服务模式......
  • Mappest操作
    1publicstaticclassMappTest2{3publicstaticvoidRun()4{5varconfig=newTypeAdapterConfig();6//只要配置需要处理的类,并支持多个属性操作7config.ForType<MiddleClass,MiddleClass2>()8.Map(des......
  • 京东APP百亿级商品与车关系数据检索实践
    作者:京东零售张强导读本文主要讲解了京东百亿级商品车型适配数据存储结构设计以及怎样实现适配接口的高性能查询。通过京东百亿级数据缓存架构设计实践案例,简单剖析了jimdb的位图(bitmap)函数和lua脚本应用在高性能场景。希望通过本文,读者可以对缓存的内部结构知识有一定了解......
  • 最新毕设-SpringBoot-校园学习交流和资源共享平台-78210(免费领项目)可做计算机毕业设计
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1 数据流程2.2.2 用户登录流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系统......
  • 台球助教系统APP开发方案源码搭建
    ‌台球助教系统开发方案‌‌一、项目背景与目标‌随着台球运动的普及,越来越多的爱好者希望提升自己的技术水平。然而,专业的台球教练资源有限,且费用较高。因此,我们计划开发一款台球助教系统,旨在通过智能化、个性化的教学辅助,帮助台球爱好者提升技术水平,同时降低学习成本。......