[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录

bug描述

1.点击的A页面, 跳转到了B页面, 第一次页面正常显示

2.从B页面返回A页面

3.A页面不进行任何操作,再次点击A页面进入B页面

4.B页面自动滚动到底部.

原因

看一段A页面代码

js 复制代码
					let that = this
					this.defaultScrollTop = uni.getStorageSync('detailScrollTop')
					this.$nextTick(() => {
						that.getInfoHeight();
						that.getPostion()
						clearTimeout(this.timer)
						this.timer = setTimeout(() => {
							if (that.courseInfo.unlock != 0 && that.courseInfo.catalog && that
								.courseInfo.catalog.length) {
								if (this.firstLoad) {
									that.switchClick(2)
								} else {
									if (!this.firstLoad) {
										console.log('jump to page')
										console.log(this.defaultScrollTop, '----')
										uni.pageScrollTo({
											scrollTop: this.defaultScrollTop,
											duration: 150
										})
									}
								}
								this.firstLoad = false
							}
						}, 300)
					})

分析:

此处代码仅在 onLoad中调用, 按理说和点击事件毫无关系

最后排查发现 问题出在事件循环上

js 复制代码
this.$nextTick(()=>{})

所以在路由跳转后, A页面的该回调函数被调用,此时的回调触发uni.pageScrollTo

就造成了在B页面诡异的滚动到底部问题

处理方案

移除 jsthis.$nextTick(()=>{}) 或者在A页面做逻辑判断

相关推荐
拉不动的猪7 小时前
webpack编译中为什么不建议load替换ast中节点删除consolg.log
前端·javascript·webpack
中冕—霍格沃兹软件开发测试8 小时前
探索性测试:思维驱动下的高效缺陷狩猎
人工智能·科技·开源·appium·bug
阿蒙Amon9 小时前
JavaScript学习笔记:6.表达式和运算符
javascript·笔记·学习
小a杰.9 小时前
Flutter 设计系统构建指南
开发语言·javascript·ecmascript
kgduu11 小时前
js之事件系统
javascript
前端老宋Running12 小时前
“受控组件”的诅咒:为什么你需要 React Hook Form + Zod 来拯救你的键盘?
前端·javascript·react.js
阿蒙Amon12 小时前
JavaScript学习笔记:7.数字和字符串
javascript·笔记·学习
Highcharts.js12 小时前
官方文档|Angular 框架集成 Highcharts Dashboards
前端·javascript·angular.js·highcharts·看板·使用文档·dashboards
韭菜炒大葱12 小时前
React 新手村通关指南:状态、组件与魔法 UI 🧙‍♂️
前端·javascript·react.js
小明记账簿13 小时前
JavaScript浮点数精度问题及解决方案
开发语言·javascript·ecmascript