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

十二、路由、生命周期函数

router路由

页面路由指的是在应用程序中实现不同页面之间的跳转,以及数据传递。通过 Router 模块就可以实现这个功能

2.1创建页面

之前是创建的文件,使用路由的时候需要创建页面,步骤略有不同

  1. 方法 1:直接右键新建Page(常用)
  2. 方法 2:单独添加页面并配置
2.1.1直接右键新建Page

2.1.2单独添加页面并配置
1.新建页面

pages/DetailPage.ets

@Entry
@Component
struct DetailPage {build() {Column({ space: 15 }) {Text('Detail Page').fontSize(40)Button('Back')}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

2.调整配置

:::success
小技巧:

  • 按两次 shift 在弹出的界面中输入文件名,可以快速定位

:::

{
//这是一个数组,页面路径管理中心"src": ["pages/Index",
+    "pages/DetailPage"]
}

:::success
TIP

  • 手动新建一个页面(ets)文件,需要在** main_pages.json **中手动配置
  • 可以自动创建(会自动添加配置)
  • 删除页面**不会**自动删除配置,需要手动删除

:::

2.2.页面跳转

接下来学习路由的跳转,页面跳转是开发过程中的一个重要组成部分。

在使用应用程序时,通常需要在不同的页面之间跳转,有时还需要将数据从一个页面传递到另一个页面。接下来咱们分场景来讲解这部分的内容:

  1. 页面跳转与后退
  2. 路由模式
  3. 参数传递
2.2.1页面跳转与后退

首先来看看看使用频率最高的 跳转和 后退,核心就是使用 router 的方法

// 1. 导入
import router from '@ohos.router';// 2.调用方法-普通跳转(可以返回)
router.pushUrl({url:'页面地址'
})// 2.调用方法-替换跳转(无法返回)
router.replaceUrl({url:'页面地址'
})// 2.调用方法-返回()
router.back()

:::info
试一试:

  1. 创建目录,管理页面,
    1. 在目录下添加:首页,详情页
  2. 页面 A 中分别使用pushUrl和replaceUrl跳转到页面 B
  3. 页面 B 测试 back 方法返回和

:::

import router from '@ohos.router'@Entry@Componentstruct Index {build() {Column({ space: 15 }) {Text('首页').fontSize(40)// 通过 router 模块进行跳转Button('去详情页-pushUrl').onClick(() => {router.pushUrl({url: 'pages/day11/knowledges/router01/DetailPage',})})Button('去详情页-replaceUrl').onClick(() => {router.replaceUrl({url: 'pages/day11/knowledges/router01/DetailPage',})})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}}
import router from '@ohos.router'@Entry@Componentstruct DetailPage {build() {Row() {Column() {Text('详情页').fontSize(50).fontWeight(FontWeight.Bold)Button('返回').onClick(() => {router.back()})}.width('100%')}.height('100%')}}

:::info
router.pushUrl() 和 router.replaceUrl()。都可以跳转页面,区别为是否会替换当前页。

  • router.pushUrl():目标页面不会替换当前页,而是压入页面栈。这样可以保留当前页的状态,并且可以通过返回键或者调用router.back()方法返回到当前页。
  • router.replaceUrl():目标页面会替换当前页,并销毁当前页。这样可以释放当前页的资源,并且无法返回到当前页。

划重点:pushUrl 可以返回 replaceUrl 无法返回

:::

2.2.2页面栈

页面栈是用来存储程序运行时页面的一种数据结构,遵循先进后出的原则,咱们结合刚刚的代码来说明一下:

:::info
页面栈的最大容量为32个页面

:::

2.2.2.1pushUrl的情况

先来看看 pushUrl的情况
1默认打开首页 → 首页入栈
2pushUrl 去详情页 → 详情页入栈
3back 返回上一页 → 详情页出栈
4此时页面栈中应该只有一个页面
整一个过程中,都可以 router.getLength 进行查看

2.2.2.2replaceUrl 的情况

再来看看replaceUrl的情况
1默认打开首页 → 首页入栈
2replaceUrl 去详情页 → 详情页替换首页,首页销毁
3back 无法返回 → 没有上一页

2.2.2.3页面栈相关 api

为了让咱们更好的获取页面栈的信息,router 模块也提供了对应的 api 以供使用

// 获取页面栈长度
router.getLength()// 获取页面状态 
let page = router.getState();
console.log('current index = ' + page.index);
console.log('current name = ' + page.name);
console.log('current path = ' + page.path);// 清空页面栈
router.clear()

2.3路由模式

路由提供了两种不同的跳转模式,不同模式的决定了页面是否会创建多个实例
Standard:多实例模式,也是默认情况下的跳转模式。目标页面会被添加到页面栈顶,无论栈中是否存在相同url的页面。
Single:单实例模式。如果目标页面的url已经存在于页面栈中,则会将离栈顶最近的同url页面移动到栈顶,该页面成为新建页。如果目标页面的url在页面栈中不存在同url页面,则按照默认的多实例模式进行跳转。

:::info
简而言之:
1Standard:无论之前是否添加过,一直添加到页面栈【常用】
2Single:如果之前加过页面,会使用之前添加的页面【看情况】

:::

// 多实例模式下,router.RouterMode.Standard参数可以省略。// pushUrl 和 replaceUrl 均可以在第二个参数设置 【路由模式】
router.pushUrl(options,mode)
router.replaceUrl(options,mode)
参数名 类型 必填 说明
options RouterOptions

相关文章:

十二、路由、生命周期函数

router路由 页面路由指的是在应用程序中实现不同页面之间的跳转,以及数据传递。通过 Router 模块就可以实现这个功能 2.1创建页面 之前是创建的文件,使用路由的时候需要创建页面,步骤略有不同 方法 1:直接右键新建Page(常用)方法 2:单独添加页面并配置2.1.1直接右键新建…...

【蓝桥杯每日一题】X 进制减法

X 进制减法 2024-12-6 蓝桥杯每日一题 X 进制减法 贪心 进制转换 题目大意 进制规定了数字在数位上逢几进一。 XX 进制是一种很神奇的进制, 因为其每一数位的进制并不固定!例如说某 种 XX 进制数, 最低数位为二进制, 第二数位为十进制, 第三数位为八进制, 则 XX 进制…...

《蓝桥杯比赛规划》

大家好啊!我是NiJiMingCheng 我的博客:NiJiMingCheng 这节课我们来分享蓝桥杯比赛规划,好的规划会给我们的学习带来良好的收益,废话少说接下来就让我们进入学习规划吧,加油哦!!! 一、…...

C++算法练习day70——53.最大子序和

题目来源:. - 力扣(LeetCode) 题目思路分析 题目:寻找最大子数组和(也称为最大子序和)。 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素&#x…...

import是如何“占领满屏“

import是如何“占领满屏“的? 《拒绝使用模块重导(Re-export)》 模块重导是一种通用的技术。在腾讯、字节、阿里等各大厂的组件库中都有大量使用。 如:字节的arco-design组件库中的组件:github.com/arco-design… …...

ceph /etc/ceph-csi-config/config.json: no such file or directory

环境 rook-ceph 部署的 ceph。 问题 kubectl describe pod dragonfly-redis-master-0Warning FailedMount 7m59s (x20 over 46m) kubelet MountVolume.MountDevice failed for volume "pvc-c63e159a-c940-4001-bf0d-e6141634cc55" : rpc error: cod…...

C语言——验证“哥德巴赫猜想”

问题描述: 验证"哥德巴赫猜想" 任何一个大于2的偶数都可以表示为两个质数之和。例如,4可以表示为22,6可以表示为33,8可以表示为35等 //验证"哥德巴赫猜想" //任何一个大于2的偶数都可以表示为两个质数之和…...

Flourish笔记:柱状图(Column chart (grouped))

文章目录 样式设定Chart Type:图表类型Controls & Filters:展示方式Colors:颜色bars:柱子的调整labels:柱子数字标注X axis:横坐标标签Y axis:纵坐标标签Plot BackgroundNumber FormatingLe…...

深度学习案例:DenseNet + SE-Net

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 回顾DenseNet算法 DenseNet(Densely Connected Convolutional Networks)是一种深度卷积神经网络架构,提出的核心思想是通过在每一层与前面所有层进行直接连接…...

excel文件合并,每个excel名称插入excel列

import pandas as pd import os # 设置文件夹路径 folder_path rC:\test # 替换为您的下载文件夹路径 output_file os.path.join(folder_path, BOM材料.xlsx) # 创建一个空的 DataFrame 用于存储合并的数据 combined_data pd.DataFrame() # 遍历文件夹中的所有文件 for …...

Linux 如何设置特殊权限?

简介 通过使用 setuid、setgid 、sticky,它们是 Linux 中的特殊权限,可以对文件和目录的访问和执行方式提供额外的控制。 命令八进制数字功能setuid4当执行文件时,它以文件所有者的权限运行,而不是执行它的用户的权限运行。setg…...

零基础如何使用ChatGPT快速学习Python

引言 AI编程时代来临,没有编程基础可以快速上车享受时代的红利吗?答案是肯定的。本文旨在介绍零基础如何利用ChatGPT快速学习Python编程语言,开启AI编程之路。解决的问题包括:传统学习方式效率低、缺乏互动性以及学习资源质量参差…...

【开源】一款基于SpringBoot 的全开源充电桩平台

一、下载项目文件 下载源码项目文件口令:动作璆璜量子屏多好/~d1b8356ox2~:/复制口令后,进入夸克网盘app即可保存(如果复制到夸克app没有跳转资源,可以复制粘贴口令到夸克app的搜索框也可以打开(不用点搜索按钮&#…...

AI - RAG中的状态化管理聊天记录

AI - RAG中的状态化管理聊天记录 大家好,今天我们来聊聊LangChain和LLM中一个重要的话题——状态化管理聊天记录。在使用大语言模型(LLM)的时候,聊天记录(History)和状态(State)管理是非常关键的。那我们先…...

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全,比如Log4j,fastjson。今天讲一下框架安全,就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提…...

【STM32系列】提升ADC采样精度的方法

资料地址 兆易创新GigaDevice-资料下载兆易创新GD32 MCU ADC简介 ADC转换包括采样、保持、量化、编码四个步骤。的采样电容上,即在采样开关 SW 关闭的过程中,外部输入信号通过外部的输入电阻 RAIN 和以及 ADC 采样电阻 RADC 对采样电容 CADC 充电。采样…...

前端面试如何出彩

1、原型链和作用域链说不太清,主要表现在寄生组合继承和extends继承的区别和new做了什么。2、推荐我的两篇文章:若川:面试官问:能否模拟实现JS的new操作符、若川:面试官问:JS的继承 3、数组构造函数上有哪些…...

Linux 切换用户的两种方法

sudo -su user1 与 su - user1 都可以让当前用户切换到 user1 的身份执行命令或进入该用户的交互式 Shell。但它们在权限认证方式、环境变量继承和 Shell 初始化过程等方面存在一些差异。 权限认证方式 su - user1 su 是 “switch user” 的缩写,默认情况下需要你输…...

Spring Boot 3 中Bean的配置和实例化详解

一、引言 在Java企业级开发领域,Spring Boot凭借其简洁、快速、高效的特点,迅速成为了众多开发者的首选框架。Spring Boot通过自动配置、起步依赖等特性,极大地简化了Spring应用的搭建和开发过程。而在Spring Boot的众多核心特性中&#xff…...

Vue实现留言板(实现增删改查)注意:自己引入Vue.js哦

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scri…...

java+uniapp集成unipush2实现消息推送

一、开通uniPush2.0 1.实名认证 登录DCloud开发者中心&#xff0c;通过实名认证 2.进入UniPush控制台 HBuilderX中打开项目的manifest.json文件 导航在“App模块配置” → 项的“Push(消息推送)” → “UniPush”下点击配置 或者申请开通。 3.配置应用信息 在UniPush开通界面…...

GD32F303硬件I2C实战:手把手教你用AT24C02 EEPROM存储和读取设备配置参数

GD32F303硬件I2C实战&#xff1a;构建工业级参数存储系统 在嵌入式设备开发中&#xff0c;系统参数的持久化存储是个看似简单却暗藏玄机的需求。想象一下&#xff0c;当你的智能温控器经历突然断电后&#xff0c;所有用户设置的日程和偏好全部归零——这种体验足以让产品口碑崩…...

从CelebA数据集到落地应用:一份给新手的MTCNN训练数据制作与模型训练全指南

从CelebA数据集到落地应用&#xff1a;MTCNN训练数据制作与模型训练全指南 人脸检测作为计算机视觉的基础任务&#xff0c;其精度直接影响后续的人脸识别、表情分析等应用效果。MTCNN&#xff08;Multi-task Cascaded Convolutional Networks&#xff09;作为经典的多任务级联人…...

【仅限首批Early Access用户】Claude 3.5 Sonnet的“动态温度调节”机制详解:如何让模型在严谨性与创意性间智能切换?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude 3.5 Sonnet新功能详解 Anthropic 正式发布的 Claude 3.5 Sonnet 在推理速度、多模态理解与工具调用能力上实现显著跃升&#xff0c;尤其在代码生成与结构化输出方面表现突出。该模型原生支持 JS…...

CANN/asc-devkit asc_select矢量选择函数

asc_select 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.com…...

Python 爬虫数据处理:富文本爬虫内容格式化还原

前言 互联网平台发布的文章、资讯、公众号推文、论坛帖子、商品详情、教程文案等内容&#xff0c;普遍以富文本形式存在&#xff0c;融合文字、段落层级、换行缩进、加粗引用、列表排版、超链接、分段结构等多种格式元素。普通爬虫仅能抓取原始 HTML 源码或纯文本内容&#xf…...

从ABL项目看激光武器发展:技术挑战、工程突破与未来转型

1. 项目背景与核心争议十几年前&#xff0c;当美国国防部&#xff08;DoD&#xff09;最终决定为YAL-1机载激光试验台&#xff08;ABL&#xff09;项目画上句号时&#xff0c;在军事与航空航天工程圈子里引发的讨论&#xff0c;远比一份简单的项目终止公告要复杂得多。这个项目…...

GPU架构优化新突破:Lumina框架解决AI硬件设计挑战

1. GPU架构设计空间探索的挑战与机遇现代AI计算基础设施中&#xff0c;GPU已成为支撑大规模模型训练与推理的核心硬件。随着大语言模型&#xff08;LLM&#xff09;参数规模突破千亿级别&#xff0c;传统GPU架构设计方法面临三大核心挑战&#xff1a;设计空间爆炸问题&#xff…...

八大网盘直链获取开源工具全面指南:如何高效管理你的云端文件下载

八大网盘直链获取开源工具全面指南&#xff1a;如何高效管理你的云端文件下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动…...

从静电威胁到电路卫士:TVS选型实战与PCB防护布局

1. 静电威胁&#xff1a;电子产品的隐形杀手 第一次亲眼见到静电放电&#xff08;ESD&#xff09;毁掉芯片的场景&#xff0c;至今记忆犹新。那是在调试一块USB接口板时&#xff0c;同事刚摸到Type-C接口&#xff0c;屏幕突然蓝屏——价值2000元的FPGA就这么报废了。这种看不见…...