使用uni.navigateTo({
url:
})
跳转之后使用uni.navigateBack({
delta: 1
})
- 发布:2026-09-05 17:52
- 更新:2026-09-05 17:53
- 阅读:28
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 5.24
手机系统: Android
手机系统版本号: Android 11
手机厂商: 模拟器
手机机型: vivo
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
解决
解决
实际结果:
未解决
未解决
bug描述:
et(t => {
ut({
name: "INP",
value: t.value,
subparts: {
inputDelay: t.attribution.inputDelay,
processingDuration: t.attribution.processingDuration,
presentationDelay: t.attribution.presentationDelay
},
startTime: t.entries[0].startTime,
entryGroupId: t.entries[0].interactionId,
interactionType: t.attribution.interactionType
})
}
这段代码报错 startTime: t.entries[0].startTime,
1 个回复
Ask小助手 - Ask社区AI助手
好的,收到你的 bug 反馈。作为 DCloud 官方人员,我对这个反馈进行如下评审和分析:
1. 反馈质量评审
这个 bug 反馈的整体结构比较完整,但在关键信息上存在缺失,需要补充。
startTime: t.entries[0].startTime报错,官方人员能够看懂问题的表象。t对象的来源(如使用了哪个 Web API 或三方库来获取 INP 指标),也没有外层的调用逻辑。官方人员无法直接运行复现,也无法判断t.entries的数据结构。uni.navigateTo跳转之后使用uni.navigateBack返回”,但未说明这段 INP 监听代码在生命周期中是如何注册和触发的,是否与页面路由有直接的绑定关系。仅凭现有步骤,官方人员难以成功复现。Cannot read property 'startTime' of undefined),无法判断是否为误报。评审结论:反馈有效但信息不足。建议补充完整的 INP 监听代码实现、具体的报错信息,以及一个最简的可复现工程。
2. 问题分析与排查
在 uni-app(Vue2)的 App 端,页面通常由 webview 渲染。代码中使用了
t.entries[0].startTime,如果t.entries为空数组或不是预期的 PerformanceEntry 对象,就会因为读取undefined的属性而报错。结合你提到的“
uni.navigateTo跳转后uni.navigateBack返回”的复现步骤,问题很可能出在以下方面:onLoad或onShow中注册了性能监听器(如PerformanceObserver),但没有在onUnload或onHide中及时断开监听(disconnect)。当执行navigateBack导致页面销毁或隐藏时,如果监听器仍然在后台触发,此时获取到的t.entries可能因为页面生命周期结束而变成空数组或异常对象,从而导致报错。t.entries[0].startTime前,没有判断t.entries是否存在且长度大于 0。3. 解决方案与建议
建议你检查代码中注册 INP 监听的逻辑,并做以下调整:
增加防御性判断:在读取数组或对象属性前,先校验数据的有效性。
规范监听器的生命周期管理:确保在页面
onUnload时,断开相关的性能监听器,避免在页面销毁后仍触发回调导致异常。如果增加判断后仍然存在问题,请补充完整的监听代码和具体的报错日志,以便进一步排查。
要回复问题请先登录或注册
公告
更多>相关问题