当前位置: 首页 > web >正文

鸿蒙NEXT-HMRouter,在使用router后无法跳转问题解决

作者使用HMRouter,搭建鸿蒙三层架构完成App时候,在登录页进入首页的时候遇到了一个Bug,使用Router跳转后,在HMRouter中无法跳转页面了,现在将该bug的解决方法分享出来。

错误示例代码如下:

import { router } from '@kit.ArkUI';@Entry
@ComponentV2
struct LoginPage {@State message: string = 'Hello World';aboutToAppear(): void {console.log('LifeCircle创建')}onDidBuild(): void {console.log('LifeCircle组件构建完成')}onPageShow(): void {console.log('页面-PageShow')}onPageHide(): void {console.log('页面-Page隐藏')}build() {Column(){/*登录页面代码省略**/}.onVisibleAreaChange([1.0],()=>{/**省略登录校验过程**/router.replaceUrl({url:'pages/Index'})})}
}

作者为了方便,直接在onVisibleAreaChange中直接登录跳转到首页去了,到了首页发现,使用HMRouter无法跳转到其他页面了。

分析错误原因:

onVisibleAreaChange 是高频触发的回调,若在此处直接跳转,可能因页面未完全初始化导致路由状态异常。(页面生命周期冲突)

解决方案:

避免在 onVisibleAreaChange 中直接跳转,改用显式触发(如按钮点击)或页面生命周期回调

例如下面示例代码

import { router } from '@kit.ArkUI';@Entry
@Component
struct LoginPage{@State message: string = 'Hello World';aboutToAppear(): void {router.replaceUrl({url:'pages/Index'})console.log('LifeCircle创建')}onDidBuild(): void {console.log('LifeCircle组件构建完成')}onPageShow(): void {console.log('页面-PageShow')}onPageHide(): void {console.log('页面-Page隐藏')}build() {Column(){}}
}

在aboutToAppear中,进行页面跳转即可。

实际结果:在页面生命周期回调中跳转到首页后,HMRouter,可以正常跳转页面。Bug修改成功

http://www.xdnf.cn/news/14256.html

相关文章:

  • 人口贩卖暑期威胁消解:算法协同提升安全预警
  • SLAM文献之-LOAM: Lidar Odometry and Mapping in Real-time
  • 【一】零基础--分层强化学习概览
  • C# WinForms 实现打印监听组件
  • SAP学习笔记 - 开发33 - 前端Fiori开发 Accessibility(可访问性)
  • 10.OpenCV—联合QT界面显示
  • 【计算机网络】非阻塞IO——epoll 编程与ET模式详解——(easy)高并发网络服务器设计
  • 【python深度学习】Day53对抗生成网络
  • 安装laravel11和laravel12的一些报错问题解决
  • QDEC vs FlexPWM:RT1176编码器接口深度对比与工程实践指南
  • mysql查看表结构语句
  • 铸铁试验平台的重要性及应用前景
  • MVVM、MVP、MVC
  • MQ选型及RocketMQ架构总览
  • YOLOv3 的网络结构详解
  • Linux系统之pic详解
  • Redis集群模式之Redis Cluster(3)
  • TC3xx中PFLASH缓存对XCP标定常量的影响
  • Fast API 中的用户认证:深入理解 JWT(JSON Web Tokens)
  • 软死锁的检测--看门狗
  • JavaSE超详细笔记-网络编程篇-基于黑马
  • 数据库连接池深度研究分析报告
  • rt-thread的红外遥控开源库使用(裸机版本)记录.
  • 暑期车辆违停治理:视觉算法的实践路径
  • 【C语言】图书管理系统(文件存储版)丨源码+详解
  • 提的缺陷开发不改,测试该怎么办?
  • 《Gulp与SCSS:解构前端样式开发的底层逻辑与实战智慧》
  • QT集成Boost库
  • PyCharm 中更改缓存和插件目录
  • 【华为开发者学堂】HarmonyOS