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://www.mzph.cn/diannao/76102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 程序员面试题:从基础到高阶的深度解析

引言 Java 作为全球最流行的编程语言之一,其面试题不仅考察候选人的编程能力,更关注对底层原理和架构设计的理解。本文将系统梳理 Java 面试中的高频考点,结合代码示例与原理分析,助您从容应对技术面试。 一、Java 基础语法与核…

Python操作Excel文件的11种方法

Python操作Excel文件的11种方法 pandas:功能强大,支持数据清洗、转换和分析,适用于数据分析和处理任务。 openpyxl:专注于 .xlsx 文件格式,提供细粒度的操作,适用于需要对 Excel 文件进行细粒度操作的场景…

ZGC初步了解

ZGC ZGC和G1,CMS一样都是一种垃圾回收器。那其实G1已经很不错了 为什么还需要ZGC呢 ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms; 停顿时…

Tof 深度相机原理

深度相机(TOF)的工作原理_tof相机原理-CSDN博客 深度剖析 ToF 技术:原理、优劣、数据纠错与工业应用全解析_tof技术-CSDN博客 飞行时间技术TOF_tof计算公式-CSDN博客 深度相机(二)——飞行时间(TOF)_飞行时间技术-C…

c++-函数增强

一、编译器对函数名的处理 1. C与C的差异 C编译器:保留原始函数名,无额外处理。例如: int add(int a, int b) { return a b; } 在汇编代码中仍为add。 C编译器:通过name mangling(名称修饰)生成唯一函数…

跟着StatQuest学知识08-RNN与LSTM

一、RNN (一)简介 整个过程权重和偏置共享。 (二)梯度爆炸问题 在这个例子中w2大于1,会出现梯度爆炸问题。 当我们循环的次数越来越多的时候,这个巨大的数字会进入某些梯度,步长就会大幅增加&…

HarmonyOS 之 @Require 装饰器自学指南

在 HarmonyOS 应用开发工作中,我频繁碰到组件初始化传参校验的难题。在复杂的组件嵌套里,要是无法确保必要参数在构造时准确传入,就极易引发运行时错误,而且排查起来费时费力。一次偶然的机会,我接触到了 Require 装饰…

CDN节点对网络安全扫描的影响:挑战与应对策略

引言 在当今互联网环境中,内容分发网络(CDN)已成为提升网站性能和用户体验的关键技术。然而,CDN的广泛应用也为网络安全扫描带来了新的挑战。本文将深入探讨CDN节点如何影响各类安全扫描工作,分析由此产生的安全风险,并提供有效的…

【Git多分支使用教程】

Git多分支使用教程 Git多分支使用手册目录多分支只拉取一个多分支拉取指定几个步骤 1:克隆第一个分支步骤 2:获取其他分支 常见问题与解决方法1. 错误:origin/分支名 is not a commit2. 分支名称冲突3. --single-branch 限制 总结 Git多分支使…

【身份安全】OAuth 2.0工作原理(一)

目录 OAuth 授权框架一、OAuth 角色二、协议流程三、应用注册(Application Registration)用户 ID(Client ID) 和 用户密码(Client Secret) 四、权限授予1、授权码链接2、用户授权申请3、应用程序接收授权码…

大疆上云api直播功能如何实现

概述 流媒体服务器作为直播画面的中转站,它接收推流端的相机画面,同时拉流端找它获取相机的画面。整个流程如下: 在流媒体服务器上创建流媒体应用(app),一个流媒体服务器上面可以创建多个流媒体应用约定推拉流的地址。假设流媒体服务器工作在1935端口上面,假设创建的流…

ESP-01模块连接手机热点问题及解决方法

在使用ESP-01模块连接手机热点时,可能会遇到一些问题。本文将详细介绍如何解决这些问题,并分享最终通过将WiFi切换到2.4GHz成功解决问题的经验。 一、问题描述 在尝试使用ESP-01模块连接手机热点时,遇到了连接失败的问题。以下是操作过程中…

NG-ZORRO中tree组件的getCheckedNodeList怎么使用

在 NG-ZORRO(Ant Design for Angular) 的 Tree 组件 中,getCheckedNodeList 方法用于获取当前选中的节点列表(包括半选状态节点)。以下是具体用法和示例: 基本用法 首先,确保你已通过 ViewChil…

业务流程先导及流程图回顾

一、测试流程回顾  1. 备测内容回顾  备测内容: 本次测试涵盖买家和卖家的多个业务流程,包括下单流程、发货流程、搜索退货退款、支付抢购、换货流程、个人中心优惠券等。 2. 先测业务强调  1)测试业务流程 …

从ChatGPT到AutoGPT——AI Agent的范式迁移

一、AI Agent的范式迁移 1. ChatGPT的局限性与Agent化需求 单轮对话的“工具属性” vs. 多轮复杂任务的“自主性” ChatGPT 作为强大的生成式AI,虽然能够进行连贯对话,但本质上仍然是“工具型”AI,依赖用户提供明确的指令,而无法自主规划和执行任务。 人类介入成本过高:提…

【Kafka】分布式消息队列的核心奥秘

文章目录 一、Kafka 的基石概念​主题(Topic)​分区(Partition)​生产者(Producer)​消费者(Consumer)​ 二、Kafka 的架构探秘​Broker 集群​副本机制​ 三、Kafka 的卓越特性​高…

【蓝桥杯14天冲刺课题单】Day 1

1. 题目链接:19937 艺术与篮球 该题目的难点主要在20240413这个日期需要结束程序跳出循环。最开始将该输出ans的位置放在了for循环之外,此时的日期已经循环完了2024年所有的日期,则最后会统计多而导致结果错误。 AC代码: #incl…

AI人工智能-Jupyter NotbookPycharm:Py开发

安装 命令: pip install jupyter 启动 命令: jupyter notebook 启动成功后,下面网址会默认自动打开当前用户的根目录。 其实这个页面显示的内容,是我们电脑目录C:\Users\当前用户\下的文件夹 我们平常做实验,希望在…

命悬生死线:当游戏遭遇DDoS围剿,如何用AI破局?

文章作者:腾讯宙斯盾DDoS防护团队 一、血色战场:DDoS攻击游戏产业的致命瞬间 全球黑色星期五 这是一场波及全球的“黑色星期五”,起初无人察觉,包括小林。 他刚下班到家就迫不及待打开电脑,准备体验期待已久的《黑神话…

使用HTML5和CSS3实现3D旋转相册效果

使用HTML5和CSS3实现3D旋转相册效果 这里写目录标题 使用HTML5和CSS3实现3D旋转相册效果项目介绍技术栈核心功能实现思路1. HTML结构2. CSS样式解析2.1 基础样式设置2.2 3D效果核心样式2.3 卡片样式 3. JavaScript交互实现3.1 旋转控制3.2 自动播放功能 技术要点总结项目亮点总…