問心
問心
  • 发布:2024-11-28 10:40
  • 更新:2024-11-29 11:34
  • 阅读:68

【报Bug】自定义组件中使用uni.createSelectorQuery()获取节点信息在屏幕翻转后信息不正确

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win10

HBuilderX类型: 正式

HBuilderX版本号: 4.28

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: Redmi

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

···
const GetRect = (selector : string, context ?: any, all = false) => {
return new Promise((resolve, reject) => {
try {
let query = uni.createSelectorQuery();
if (context) {
query = uni.createSelectorQuery().in(context);
}
queryall ? "selectAll" : "select"
.boundingClientRect(function (rect) {
if (all && rect && Array.isArray(rect) && rect.length) {
resolve(rect);
}
if (!all && rect) {
resolve(rect);
}
resolve(rect);
})
.exec();
} catch (e) {
//TODO handle the exception
}
});
}
const calcScrollXWidth = async () => {
const rect = await GetRect(#cont-box-${formId.value}, proxy, true);
console.log('cont-box', rect)
if (rect) {
let maxRect = 0
if (Array.isArray(rect)) {
rect.forEach((item) => {
if (!maxRect) {
maxRect = item.width
} else if (maxRect < item.width) {
maxRect = item.width
}
})
}
if (maxRect) {
scorllXWidth.value = maxRect
}
}
}
···

操作步骤:

将屏幕从横屏翻转为竖屏后使用 uni.createSelectorQuery()获取节点的宽高

预期结果:

获取当前屏幕状态下的节点宽高

实际结果:

取到的是横屏下的宽高

bug描述:

在使用uni.createSelectorQuery()获取自定义组件的节点宽度和高度时,屏幕先由竖屏翻转为横屏此时获取的宽高是正确的,从横屏翻转为竖屏此时再获取宽高就一直是横屏时的宽高

2024-11-28 10:40 负责人:无 分享
已邀请:
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

折叠屏竖屏 请求 createQuerySelector 查询正常,切换为横屏之后查询正常,再切换为竖屏不正常是吗?如果不是请具体描述一下场景。

如果等两秒再请求是否正常?请排查下是功能有延迟,还是功能调整几次之后功能坏了

要回复问题请先登录注册