HarmonyOS鸿蒙Next中从A页面跳转至B页面,B页面声明周期方法会调用两次,是什么原因呢?

HarmonyOS鸿蒙Next中从A页面跳转至B页面,B页面声明周期方法会调用两次,是什么原因呢?

this.getUIContext().getRouter().pushUrl({
  url: 'pages/PersonInfoDetailPage',
  params:{uuid:this.userUuid}
});
function onPageShow(): void {
  console.log(`-----onPageShow------onPageShow`)
}


更多关于HarmonyOS鸿蒙Next中从A页面跳转至B页面,B页面声明周期方法会调用两次,是什么原因呢?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

啊 这不是不同的回调函数么,为啥说是两次。

更多关于HarmonyOS鸿蒙Next中从A页面跳转至B页面,B页面声明周期方法会调用两次,是什么原因呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


哈哈贴错图了,

基本信息

  • 姓名: 张三
  • 年龄: 28
  • 职位: 开发工程师

技能

  • Python
  • Java
  • C++

你这个是稳定复现的吗,,


  • 复制
  • 深色代码主题

我测了一下 只执行一次呀。。。",

在HarmonyOS Next中,B页面生命周期方法被调用两次通常是由于页面重复创建或重复跳转导致的。常见原因包括:

  1. 使用了多次navigateTo或push接口跳转
  2. 页面路由配置异常
  3. 页面栈管理问题
  4. 生命周期回调注册重复

检查点:

  • 确保单次跳转只调用一次路由API
  • 检查@Entry装饰器的使用是否正确
  • 验证页面路由配置无重复

在HarmonyOS Next中,B页面的生命周期方法被调用两次通常是由于页面跳转时的生命周期管理机制导致的。根据您提供的代码和日志截图,这个问题可能由以下原因引起:

  1. 路由跳转机制:当使用pushUrl进行页面跳转时,系统会先创建目标页面实例,然后执行过渡动画,这可能导致生命周期方法被多次触发。

  2. 页面栈管理:HarmonyOS的路由系统在页面跳转时会处理页面栈,可能在某些情况下会临时创建和销毁页面实例。

  3. 参数传递:您使用了params传递参数,系统可能在处理参数时触发了额外的页面状态更新。

建议检查:

  1. 确保没有重复调用pushUrl

  2. 检查页面路由配置是否正确

  3. 确认是否有其他事件触发了页面刷新

如果需要更精确的解决方案,建议提供完整的页面路由配置和更详细的重现步骤。

回到顶部