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

鸿蒙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.dtcms.com/a/250051.html

相关文章:

  • 计算机网络-自顶向下—第四章网络层重点复习笔记
  • Python实例题:Python计算偏微分方程
  • 【Ubuntu 22.04 推荐的 apt 包管理方式详解】
  • HQL 优化:从低效到高效的蜕变之旅
  • Git可视化革命:3分钟学会用Mermaid+AI画专业分支图
  • 数据治理域——数据建模设计
  • LabVIEW工业金属腐蚀监测
  • LeetCode 第71题 简化路径(繁琐)
  • 打牙祭是什么意思
  • SCADA|信创KingSCADA4.0历史报警查询的差异
  • XCTF-misc-János-the-Ripper
  • ELK日志文件分析系统——E(Elasticsearch)
  • Karate UI测试之驱动配置
  • vulnhub-Earth
  • SD和comfyui常用模型介绍和下载
  • 什么是泛型,如何使用它?
  • 【LangChain】4 基于文档的问答
  • 操作系统多级存储模型
  • Python 使用 DrissionPage 模块进行爬虫
  • pikachu靶场通关笔记30 文件包含01之本地文件包含
  • 山东大学软件学院项目实训:基于大模型的模拟面试系统项目总结(十)
  • Apache Doris FE 问题排查与故障分析全景指南
  • Vue Methods 实现原理详解
  • UGPCL
  • 手机验证码自动化处理:从原理到企业级解决方案
  • 微信小程序开发 picker选择年月日+时分秒
  • 【论文阅读】Multi-Class Cell Detection Using Spatial Context Representation
  • C# 使用 TreeView 实践 WinRiver II 的测量管理功能
  • 基于Python的TCP应用案例,包含**服务器端**和**客户端**的完整代码
  • oracle19C(ZHS16GBK - 简体中文字符集) 数据库迁移到 oracle19C(AL32UTF8 - Unicode字符集)数据库方案