华为HarmonyOS NEXT 原生应用开发:页面路由、页面和组件生命周期函数

页面路由、组件生命周期

一、路由的基本使用

1. 如何新建页面
  1. 直接右键新建Page。【这个是最直接最常用的】
  2. 新建普通ets文件,然后通过配置变成页面。 【该方法是遇到这种情况的解决方案】

在这里插入图片描述

2. 路由 - 页面之间的跳转
  1. 使用 **router.pushUrl({})**进行跳转
import { router } from '@kit.ArkUI'
@Entry
@Component
struct Login {build () {Column() {Text('登录页').fontSize(66)// 点击按钮,从登录页跳转到首页Button('登录(跳转首页)').onClick(() => {router.pushUrl({url: 'pages/Index'})})}}
}
  1. 使用 router.replaceUrl({}) 进行跳转(该方法不能返回
import { router } from '@kit.ArkUI'
@Entry
@Component
struct Login {build () {Column() {Text('登录页').fontSize(66)// 点击按钮,从登录页跳转到首页Button('登录(跳转首页)').onClick(() => {router.replaceUrl({url: 'pages/Index'})})}}
}
  1. 使用 router.back 进行页面返回
  • 实际开发中,登录成功跳转首页是不能再返回的,这里是示例代码!
import { router } from '@kit.ArkUI'@Entry
@Component
struct Index {build() {Column() {Text('首页').fontSize(66)Button('返回登录页面').onClick(() => {router.back()  // 需要注意:该方法一般不会和 replaceUrl方法配合使用})}}
}
3. 页面栈

页面栈:就如同弹夹一样,先进后出原则。

  1. router.pushUrl: 就像当于是将子弹一直往弹夹里面装,及时返回到栈里面有的页面依旧会累加进栈。
  2. router.replaceUrl: 装一个子弹,打一个子弹,栈里面只会保留当前的页面,所以,router.back方法无法使用。
  1. router.getLength() 获取页面栈长度
import { router } from '@kit.ArkUI'@Entry
@Component
struct Index {build() {Column() {Text('首页').fontSize(66)Button('获取页面栈长度').onClick(() => {let num: string = router.getLength() // 获取页面栈长度console.log('页面栈长度为', num)})}}
}
  1. router.clear() 清空页面栈清空页面栈
import { router } from '@kit.ArkUI'@Entry
@Component
struct Index {build() {Column() {Text('首页').fontSize(66)Button('清空页面栈').onClick(() => {router.clear() // 清空页面栈})}}
}
4. 路由模式

在这里插入图片描述

5. 路由传参

我们 在 A 页面 跳转到 B 页面的同时,携带 A 页面数据跳转过去,B页面可以去除携带过来的数据包。

第一步: 在 A 页面,传递一个 params 对象(将数据打包传递给B)

      // 点击按钮,从登录页跳转到首页Button('携带参数跳转首页').onClick(() => {router.pushUrl({url: 'pages/Index',// 数据打包成对象,丢过去!params: {username: this.username,password: this.password}})})

第二步: 取出数据包

  • 数据传递过来,需要通过类型断言,并且数据名字保持一致!
import { router } from '@kit.ArkUI'// 创建接口,指定携带过来数据包的类型
interface UserInformation {username: string,password: string
}@Entry
@Component
struct Index {build() {Column() {Text('首页').fontSize(66)Button('获取A页面传递过来的数据').onClick(() => {// 获取数据包,记得类型断言。否则报错let getUserData: UserInformation = router.getParams() as UserInformation// 输出数据内容console.log('数据包内容为:', getUserData.username + '-' + getUserData.username)})}}
}

在这里插入图片描述

二、生命周期函数(页面、组件)

1. 页面生命周期函数

在这里插入图片描述

2. 组件生命周期函数

在这里插入图片描述

  • 需要注意的是, @Entry修饰的是不是也可以使用组件的生命周期函数呀!
    在这里插入图片描述

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

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

相关文章

Vulhub:Log4j[漏洞复现]

CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…

电子商务人工智能指南 4/6 - 内容理解

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析&#xff1a;功能说明&#xff1a;示例输出&#xff1a;使用场景&#xff1a; yarn list --pattern element-ui 是一个 Yarn 命令&#xff0c;用于列出项目中符合指定模式&#xff08; element-ui&#xff09;的依赖包信息。 命令解析&#xff1a; yarn list…

播放器秒开优化

开篇 先说结论&#xff1a; 字节跳动就曾给出过一份数据&#xff1a;对一部分型号的 Android 手机&#xff0c;播放首帧时长从平均 170ms 优化到 100ms&#xff0c;带来了 0.6% 左右的用户播放时长提升。 衡量指标&#xff1a; 播放秒开率&#xff0c;指的是播放器开始初始…

docker nginx 部署vue 实例

1.安装docker https://blog.csdn.net/apgk1/article/details/144354588 2. 安装nginx docker 安装 nginx-CSDN博客 3. 复制 nginx-test 实例的一些文件到宿主机中&#xff0c;目前已 /home/jznh/路径演示 3.1 在/home/jznh/ 创建 conf html logs 三个文件夹&#xff0c;…

技术人员需要成为的八边形战士

那天偶然看到一个标题&#xff1a;脾气好&#xff0c;技术佳&#xff0c;哪个程序员这么宝藏&#xff1f;我没有点进去看内容&#xff0c;但是心里在琢磨一件事&#xff1a;10年前这种宝藏程序员很难得&#xff0c;现在的市场&#xff0c;恐怕不够。恐怕市场在找的都是下面技能…

VLDB 2024 | 时空数据(Spatial-temporal)论文总结

VLDB 2024于2024年8月26号-8月30号在中国广州举行。 本文总结了VLDB 2024有关时空数据&#xff08;time series data&#xff09;的相关论文&#xff0c;主要包含如有疏漏&#xff0c;欢迎大家补充。 &#x1f31f;【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘&#xf…

【推荐算法】单目标精排模型——FiBiNET

key word: 学术论文 Motivation&#xff1a; 传统的Embedding&MLP算法是通过内积和Hadamard product实现特征交互的&#xff0c;这篇文章的作者提出了采用SENET实现动态学习特征的重要性&#xff1b;作者认为简单的内积和Hadamard product无法有效对稀疏特征进行特征交互&a…

Windows中将springboot项目运行到docker的容器中

0&#xff0c;先打包好项目&#xff0c;再启动docker 1&#xff0c;在Java项目根目录下创建一个名为Dockerfile的文件&#xff08;没有扩展名&#xff09;&#xff0c;并添加以下内容。 # 使用OpenJDK的基础镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR /app# 将项…

GB28181系列一:GB28181协议介绍

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、GB28181协议介绍 二、GB28181交互流程 1、注册 2、观看视频 3、控制 4、SDP 5、媒体保活&#xff1a; 6、RTP 7、SIP URL 一、GB28181协议介绍 GB28181使用SIP协议&#xff0c;SIP协议参考我的SIP系列&a…

【C++指南】类和对象(七):友元

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 &#x1f343;友元的介绍 &#x1f343;友元函数 &#x1f343;友元类 &#x1f343;相关…

【leetcode】替换后的最长重复字符、将字符串翻转到单调递增

1.替换后的最长重复字符 示例如下&#xff1a; 下面我们来分析一下一个例子&#xff0c;其中K 2 暴力枚举 这里的字符串s是仅由大写字母组成&#xff0c;首先我们尝试用暴力解法的思路来想一下这道题&#xff0c;通过从第一个字符开始进行枚举&#xff0c;如果出现了条件判断…

广州大学acm新生赛

#include <iostream> #include <unordered_map> #include <unordered_set> #include <map> #include <string> #include <vector> #include <algorithm> using namespace std;// 定义存储每个队伍的相关数据结构 struct TeamData {i…

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

【C++】输入三个整数,输出最大值的高级分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述&#x1f4af;解题思路&#x1f4af;实现与分析方法一&#xff1a;三元运算符的直接应用详细分析&#xff1a;优缺点剖析&#xff1a; 方法二&#xff1a;显式条件…

基于python+django+vue的高校成绩管理系统

系统展示 管理员后台界面 教师界面 学生界面 系统背景 随着教育信息化的不断推进&#xff0c;传统的手工成绩管理方式已经无法满足现代教育管理的需求。传统管理方式不仅效率低下&#xff0c;还容易出错&#xff0c;且难以实现数据的集中化管理和安全访问控制。因此&#xff0c…

怎么为开源项目做贡献提PR?

GitHub 慢的话&#xff0c;https://ask.csdn.net/questions/8166374 复刻项目 以 https://github.com/open-frame/uniapp-init 项目为例 复刻完就会在你的仓库里有个同样的项目 拉取复刻下来的项目 然后常规的改动项目、git推送。比如我改了一个忽略文件&#xff1a; 提交…

记录:ubuntu 使用chattts的过程。

你知道什么是穷人吗&#xff1f;穷人就是没钱还想学习。 git GitHub - 2noise/ChatTTS: A generative speech model for daily dialogue. 因为所以。cosyvoice&#xff0c;gpt-s . 0.先找一个目录吧。 1.命令行模式 duyichengduyicheng-computer:~/gitee$ git clone https:…

vulnhub靶场【hacksudo】之LPE的后续提权方法学习

前言 靶场&#xff1a;hacksudo-lpe的后几个challenge 基于上篇靶场hacksudo-ple的sudo提权 SUID文件提权 ar文件提权 使用find寻找具有SUID权限的文件 find / -perm -us -type f 2>/dev/null查看ar的SUID用法 sudo install -m xs $(which ar) .TF$(mktemp -u) LFILE&…

【 C语言练习(4)—可自己设置游戏规则的猜数字游戏】

C语言练习&#xff08;4&#xff09; 文章目录 C语言练习&#xff08;4&#xff09;前言题目题目解析结果总结 前言 本次写的猜字游戏有两大优点&#xff0c;可重复玩游戏、可自己设置猜数字规则&#xff0c;通过猜数字游戏锻炼循环体和选择结构体 题目 写一个给定猜数次数&a…