【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十二)

课程地址: 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发

(本篇笔记对应课程第 19节)

P19《18.ArkUI组件-页面路由》

在这里插入图片描述

以访问京东页面为例,访问过的页面并没有消失,而是进入了页面栈,栈是一个先进后出的结构。访问过的页面会被压入这个栈,当点击返回时会将当前页面弹出页面栈,从而回到上一页面;当不停地访问页面时,页面栈内会被压入很多页面。

在这里插入图片描述

在这里插入图片描述

页面路由相关的API:

在这里插入图片描述

试用一下路由:我们在index页面中添加一些路由,让其能够跳转到不同的案例页面。

在index中添加如下代码:一个 RouterInfo类,以及一个 routers 数组:

在这里插入图片描述

将 routes 数组渲染到页面:

在这里插入图片描述

ListItem中通过一个自定义构建函数实现:

在这里插入图片描述

现在开始添加路由跳转功能啦:
首先需要导入 router,写出router后会有导入提示,选择这个提示后会自动导入。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

打开log查看详细错误信息:

在这里插入图片描述

报错的原因是:我们需要在 resources/base/profile 下的 main_pages.json 文件中配置页面信息:

在这里插入图片描述

是不是我们每次创建文件都要配置对应的页面信息?不是的,我们创建的如果是页面文件,则可以选择 new Page,这样创建出来的页面会自动添加到页面配置中去,就不需要手动去添加这个页面的配置了:

在这里插入图片描述
在这里插入图片描述

再次测试发现仍然报错“路由失败”,因为我们修改了路由配置页面,重启下预览器,再次测试,可以成功跳转了。

接收路由跳转传递过来的参数:

在这里插入图片描述

router还有一个比较有用的api,返回前的警告:

在这里插入图片描述

总结:

在这里插入图片描述

实践:

// index.ets  首页import router from '@ohos.router'
class RouterInfo {// 页面路径url:string// 页面标题title:stringconstructor(url:string, title:string) {this.url = urlthis.title = title}
}@Extend(Text) function textStyle(){.fontColor('#fff').fontSize(20)
}@Entry
@Component
struct Index {// @State message: string = 'Hello World'@State routers:RouterInfo[] = [new RouterInfo('pages/ImagePage','图片查看'),new RouterInfo('pages/ItemsPage','商品列表'),new RouterInfo('pages/StatePage','Jack的信息'),new RouterInfo('pages/PropPage','任务列表'),]build() {Row() {Column({space:30}) {Text('页面列表').fontSize(32).fontWeight(FontWeight.Bold)List({space:20}){ForEach(this.routers,(item,index)=>{ListItem(){this.routerItem(item,index)}})}}.width('100%').padding(20)}.height('100%')}// 局部自定义构建函数,不需要 function 关键字@Builder routerItem(item:RouterInfo,index){Row(){Text((index+1).toString()).textStyle()Text(item.title).textStyle()}.width('100%').height(40).padding(10).justifyContent(FlexAlign.SpaceBetween).backgroundColor('#36D').borderRadius(20).shadow({radius:8, color:'#4f0000',offsetX:2, offsetY:2}).onClick(()=>{router.pushUrl({url: item.url,params: {id: index}},router.RouterMode.Single,err => {if(err){console.log(`路由失败了!code:${err.code},message:${err.message}`)}})})}
}
// CommonComponents.tes   Header 公共组件import router from '@ohos.router'
@Component
export struct Header{@State params:any = router.getParams()private title:ResourceStrbuild(){Row(){Image($r('app.media.icon_back')).width(40).onClick(()=>{router.showAlertBeforeBackPage({message:'确定返回吗?'})router.back()})if(this.params && this.title){Text(`${this.params.id} . ${this.title}`).fontSize(28)}Blank()Image($r('app.media.icon_search')).width(40)}.width('100%').height(60).padding({left:14, right:14}).justifyContent(FlexAlign.Start)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17038.shtml

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

相关文章

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序,涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码,展示LabVIEW在快速开发和调试RFID应用中的优势,使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID(…

EMQX 的初始IP改为自己的实际IP

分类 EMQX Dashboard(控制台): Dashboard提供了一个Web界面,用于管理和监控EMQX的运行状态。您可以通过配置dashboard.listeners.http.bind来设置Dashboard的监听地址和端口。例如,如果您想要Dashboard在所有网络接口上监听&#…

十分钟精通MinIO:minio的原理、部署、操作

一、认识MinIO Minio是一个简单易用的云存储服务,就像是一个放在网络上的大文件柜。想象一下,你有一间放满了各种文件的房间,有时候你需要把这些文件分享给朋友或者在不同地方访问它们。Minio就是帮你做到这一点的工具,它让你可以…

HTML+CSS+JavaScript网页制作案例教程第2版-黑马程序员-第8章动手实践

HTMLCSSJavaScript网页制作案例教程第2版-黑马程序员-第8章动手实践 文章目录 HTMLCSSJavaScript网页制作案例教程第2版-黑马程序员-第8章动手实践效果图代码素材 效果图 代码 <!doctype html> <html><head><meta charset"utf-8"><title…

Linux如何在目录下灵活创建、浏览、删除百万个文件

文章目录 一、创建百万级小文件1、单核CPU情况2、多核CPU情况3、执行效率对比3.1、单核的顺序执行3.2、多核的并发执行 二、如何列出/浏览这些文件1、查看目录下文件的数量2、列出&#xff1f;3、ls -f&#xff08;关闭排序功能&#xff09;3.1、执行效率对比 4、通过重定向导入…

SQL预处理语句

概念 预处理语句是一种特殊的数据库操作方式&#xff0c;先定义一个SQL语句模板&#xff0c;然后再填充具体的数据。 作用 防止SQL注入 参数化查询&#xff1a;在预处理语句中&#xff0c;数据是通过参数传递的&#xff0c;而不是直接拼接到SQL语句中。这意味着即使参数中包…

Javaweb数据库通用查询BaseDao

连接数据库工具类&#xff1a;DBUtil.java package util;import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;/** param null:* jdbc连接工具类* return null* author liu* description TODO* date 2024/5/25 17:05*/ …

flinkcdc 3.0 源码学习之客户端flink-cdc-cli模块

注意 : 本文章是基于flinkcdc 3.0 版本写的 我们在前面的文章已经提到过,flinkcdc3.0版本分为4层,API接口层,Connect链接层,Composer同步任务构建层,Runtime运行时层,这篇文章会对API接口层进行一个探索.探索一下flink-cdc-cli模块,看看是如何将一个yaml配置文件转换成一个任务…

电子画册制作技巧,从零基础到专业人士

电子画册作为一种新兴的视觉传达形式&#xff0c;正越来越受到大众的喜爱。从设计新手到专业人士&#xff0c;如何快速掌握电子画册的制作技巧&#xff0c;提升自己的创作水平呢&#xff1f; 一、明确设计目的和定位 制作电子画册前&#xff0c;首先要明确其设计目的和定位。画…

数字营销:以大数据作引擎,推动企业全面数字化升级

数字营销本质乃是以大数据为核之心&#xff0c;促使营销活动高效运作&#xff0c;消费者线上线下数据的无缝衔接、企业内外部数据的贯通、公域引流私域运营等&#xff0c;皆已成为企业运营的标准配置。 数据即等同于市场&#xff0c;市场即等同于用户&#xff0c;用户乃是企…

回溯算法之简单组合

哦吼&#xff01;今天结束了二叉树&#xff0c;开始回溯算法 其实也需要用到迭代&#xff0c;哈哈哈哈&#xff0c;但是这个暴力穷举真的好爽。 先记一下回溯算法的基本框架吧 老规矩&#xff1a; 还是有结束条件 但是后面就不太一样了 这里就是for循环&#xff0c;循环n…

理解 gRPC 和 tRPC 的区别:简单入门

gRPC 和 tRPC 的区别 在现代分布式系统和微服务架构中&#xff0c;服务间的通信至关重要。API 技术栈的选择直接影响到系统的性能、可维护性和开发效率。gRPC 和 tRPC 是两种备受关注的 RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;各有其独特的特性和适用场景。…

springMVC,springboot整合jasypt

生成加密串 public class Encryptor { public static void main(String[] args) { BasicTextEncryptor textEncryptor new BasicTextEncryptor(); textEncryptor.setPassword("mysalt");//自定义加密盐 String myEncryptedPassword t…

Windows下mingw32编译ffmpeg5.1.4实现rtsp拉流

由于客户要求&#xff0c;要在Windows下使用mingw32编译&#xff0c;去ffmpeg.org下载需要编译的版本&#xff0c;使用msys2方法进行编译&#xff0c;使用QT5.10的编译器&#xff0c;基本上把网上的方法试了个遍&#xff0c;编译全部库总是报错出问题 查看了ffbuild文件夹中con…

爬虫之re数据清洗

文章目录 一、正则【Regular】二、重要语法1、获取内容: 左边(.*?)右边2、替换数据: re.sub(源数据|源数据, 目标数据, 字符串) 一、正则【Regular】 概念: 根据程序员的指示, 从<字符串>中提取数据 结果: 列表 使用频率: 正则跟xpath相比, 正则是弟弟 二、重要语法 …

SvelteKit:构建高性能SSR应用的新框架

SvelteKit 是基于 Svelte 的下一代框架&#xff0c;用于构建服务器端渲染&#xff08;SSR&#xff09;和静态站点生成&#xff08;SSG&#xff09;的应用。Svelte 是一个轻量级的前端框架&#xff0c;以其极高的性能和简洁的代码著称。SvelteKit 扩展了 Svelte 的能力&#xff…

【Maven】Maven主要知识点目录整理

1. Maven的基本概念 作者相关文章链接&#xff1a; 1、【Maven】简介_下载安装-CSDN博客 定义&#xff1a;Maven是Apache的一个开源项目&#xff0c;是Java开发环境中用于管理和构建项目&#xff0c;以及维护依赖关系的强大软件项目管理工具。作用&#xff1a;简化了项目依赖…

文件夹类型异常成文件:原因解析与恢复策略

在数字时代&#xff0c;数据的安全与完整性对于个人和企业都至关重要。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况&#xff1a;原本应该是文件夹的图标&#xff0c;却突然变成了文件的图标&#xff0c;这就是所谓的“文件夹类型成文件”问题。本文将深入探讨这一现…

Swagger测试接口,请求头添加token

概述Swagger 1、概述 在日常开发中&#xff0c;我们的业务需要用户登录&#xff0c;权限控制。但是在某些情况下我们使用Swagger测试接口&#xff0c;部分接口需要携带token&#xff0c;才能访问&#xff0c;就需要在swagger添加token窗口。 效果图&#xff1a; 由 右上角 A…

如何判断一个对象是否已经被回收?

在Java中&#xff0c;无法直接判断一个对象是否已经被垃圾回收&#xff08;GC&#xff09;。Java的设计理念是让垃圾回收机制完全由JVM管理&#xff0c;程序员不应该也不能直接干预或查询垃圾回收的状态。然而&#xff0c;有一种间接的方法可以帮助我们了解对象是否已被回收&am…