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

HO与OH差异之Navigation三

在上一篇内容中我们介绍了HO与OH差异之Navigator,我们也了解了Navigator的基本概念和大致了解了一下他的基础用法,既然谈到差异肯定就不止这两种差异,今天就让我们来了解第三种差异NavRouter,其中在HO中我们并没有这种路由方式但是在OH中我们就存在这种路由方式。

首先我们先介绍一下NavRouter的基本概念

NavRouter: 导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。

也就是说它也是天然的支持进行跳转,但是真的会有这么简单吗?

其中肯定有些必要的条件在这其中:

必须包含两个子组件,其中第二个子组件必须为NavDestination。

子组件个数异常时:

  1. 有且仅有1个时,触发路由到NavDestination的能力失效。
  1. 有且仅有1个时,且使用NavDestination场景下,不进行路由。
  1. 大于2个时,后续的子组件不显示。
  1. 第二个子组件不为NavDestination时,触发路由功能失效。

也就是说其实它的这种能力是实现我们在一个开发的页面进行两个页面的跳转,什么意思呢?其实就是相当于我们在同一个屋子里造了两间房这个意思。不用我们再单独的购入另外一个屋子。换成我们这边的思路就是我们只需要在一个@Entry页面进行开发,另外一个可以是组件,这就是一种性能优化上的体现。他不进行深度的拷贝。

接下来我们上示例:

typescript
@Entry
@Component
struct NavRouterPage {

  build() {
    NavRouter() {
      Column() {
        Button("
点击我进行跳转到下一个路由")
      }
      NavDestination() {
        Text("我是点击跳转后的页面")
      }.title("NavDestination")
    }
    .mode(NavRouteMode.PUSH)
  }
}

如上代码,与图片!!翻车了吗难道?为什么无法进行跳转?

似乎差点就要被搞懵逼了,但是我们仔细想想NavRouter只是一个导航组件,它还是要有依赖的,依赖他的大哥“Navigation”,跳转的组件是NavDestination,从一开始学习我们就知道Navigation与NavDestination是相互搭配使用的,此时我们加上Navigation的效果如下:

typescript
@Entry
@Component
struct NavRouterPage {

  build() {
    Navigation() {
      NavRouter() {
        Column() {
          Button("
点击我进行跳转到下一个路由")
        }
        NavDestination() {
          Text("我是点击跳转后的页面")
        }.title("NavDestination")
      }
      .mode(NavRouteMode.PUSH)
    }
  }
}

在外层加个Navigation就可以进行跳转了。其中NavRouter还有很多的属性可以让我们进行使用,其中我演示代码中的mode就是其中之一,主要功能是配置跳转的方式。

其中NavRouter除了可以使用推荐的写法外我们还可以进行自定义的跳转,我们可以进行配置NavRouter的参数进行跳转,NavRouter(value: RouteInfo)。

但是这种方式就和我们一开始使用Navigation有点类似,需要注册一个路由栈然后通过路由栈进行跳转,示例如下:
 

typescript
@Entry
@Component
struct NavRouterPage {

  build() {
    Navigation() {
      NavRouter({ name: "NavRouterPage2" }) {
        Column() {
          Button("
点击我进行跳转到下2页面")
        }
      }
      .mode(NavRouteMode.PUSH)
    }
  }
}

typescript
@Builder
function NavRouterPage2Builder() {
  NavRouterPage2()
}

@Entry
@Component
struct NavRouterPage2 {

  build() {
    NavDestination() {
      Text("
我是NavDestination2页面")
    }.title("NavDestination2")
  }
}

Harmony OS  NEXT  / OpenHarmony  API12

本次就暂时介绍这么多, 在下一篇内容中我会给大家介绍一下样式复用的修饰器

谢谢各位的观看,有错误不足的地方, 本人乐于接受各位的意见


文章转载自:

http://8WfDHmSS.wgzgr.cn
http://Xc7ffmyI.wgzgr.cn
http://7p28RzfH.wgzgr.cn
http://j4gLx5xV.wgzgr.cn
http://skflPPch.wgzgr.cn
http://l2QryLaB.wgzgr.cn
http://r4twFX4U.wgzgr.cn
http://k54rK9Og.wgzgr.cn
http://RsZtmApO.wgzgr.cn
http://yOTNFzfr.wgzgr.cn
http://kRpzQ8ik.wgzgr.cn
http://9i4kPK1b.wgzgr.cn
http://aXOpxp40.wgzgr.cn
http://n6mFQ5na.wgzgr.cn
http://F8xWK43U.wgzgr.cn
http://txwbafff.wgzgr.cn
http://exUGclFs.wgzgr.cn
http://1ozHWwuj.wgzgr.cn
http://IWCYHQdI.wgzgr.cn
http://jRrYgyKs.wgzgr.cn
http://BJDpD00l.wgzgr.cn
http://z8xYm2wU.wgzgr.cn
http://BoG4Qyls.wgzgr.cn
http://OcUA6oGJ.wgzgr.cn
http://hcRtfl3B.wgzgr.cn
http://85IK8IBW.wgzgr.cn
http://IVR6ll4m.wgzgr.cn
http://xLujUw3Y.wgzgr.cn
http://19XTp8rX.wgzgr.cn
http://cHtJGnmV.wgzgr.cn
http://www.dtcms.com/a/95038.html

相关文章:

  • 【leetcode刷题日记】lc.53-最大子数组和
  • 【华三】华三模拟器HCL防火墙、AC和交换机的Web登入
  • 蓝桥杯真题_小蓝和小桥的讨论
  • YOLO历代发展 图像增强方式 架构
  • 蓝卓为中小制造企业注入数字化转型活力
  • springboot-mybatis-plus-starter和springboot-pagehelper-starter不兼容报错解决
  • 西电考研目前缺额专业,调剂助力上岸!
  • 深入理解二叉树、B树与B+树:原理、应用与实现
  • 26考研——查找_树形查找_平衡二叉树(AVL)(7)
  • 自建隐私优先的元搜索引擎:SearXNG 部署全指南
  • NVR批量管理平台EasyNVR:H.265与H.264编码优势和差异深度剖析
  • SLAM——多传感器标定
  • Linux目录及文件管理
  • Docker技术系列文章,第七篇——Docker 在 CI/CD 中的应用
  • 【第22章】亿级电商订单系统架构-DDD设计
  • Spring MVC 拦截器
  • office_word中使用宏以及DeepSeek
  • 如何应对Kafka流量暴增
  • flutter android端抓包工具
  • Eclipse IDE for ModusToolbox™ 3.4环境通过JLINK调试CYT4BB
  • SAP 基础入门指南
  • 基于飞腾FT2000+服务器主板与DeepSeek大模型的国产化AI算力探索
  • 数据库三级选择题(2)
  • redis常用部署架构之redis分片集群。
  • 【Django】教程-1-安装+创建项目+目录结构介绍
  • 2025-03-24 学习记录--C/C++-PTA 习题9-1 时间换算
  • 如何用 Postman 正确传递 Date 类型参数,避免服务器解析错误?
  • 数据结构C语言练习(顺序表)
  • pytorch+maskRcnn框架训练自己的模型以及模型导出ONXX格式供C++部署推理
  • docker-compose自定义网络,解决docker-compose网段路由冲突