页面跳转和两个页面之间的数据传递-鸿蒙ArkTS

页面跳转和两个页面之间的数据传递-ArkTS

  • 页面跳转和两个页面之间的数据传递-ArkTS
    • 关于router的使用
    • **跳转页面的实现方式。**
    • 页面接受跳转传递的参数
    • 页面返回及携带参数
    • 效果
    • 代码
      • Index页面
      • Second页面
    • 参考资料

页面跳转和两个页面之间的数据传递-ArkTS

本篇文章主要是对两个页面之间数据传递进行实现。

在这里插入图片描述

在这里插入图片描述

关于router的使用

页面跳转和参数接受是通过导入 router 模块实现。

import router from '@ohos.router';
  • router.pushUrl() 跳转到指定页面。
  • **router.replaceUrl() **替换当前页面并销毁。
  • **router.back() ** 返回上一个页面。
  • router.getParams() 获取上一个页面跳转过来携带的参数。
  • router.clear() 清空当前页面栈中所有历史页面,只会保留当前页面作为栈顶页面。
  • router.getLength() 获取当前页面栈中的页面数量。
  • router.getState() 获取当前页面的状态信息。
  • router.showAlertBeforeBackPage() 开启页面返回询问对话框。
  • router.hideAlertBeforeBackPage() 禁用页面返回询问对话框。

跳转页面的实现方式。

API9及以上,router.pushUrl()方法新增了mode参数,可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。

router.pushUrl()方法内的基本参数

router.pushUrl({// 跳转页面路径url: '页面',// 跳转携带的参数params: {变量名:值}
}, 当前模式)

方式一

在多实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈的元素数量不变;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量会加1。

// params对象内的变量是可以自定义参数名的,任意名称都可以只要在接受的时候通过传递时过来的变量名称就可以的。
router.pushUrl({url: 'pages/Second',params: {name: 'Index页面传递'}
}, router.RouterMode.Single)

方式二

在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,替换当前页面,并销毁被替换的当前页面,移动后的页面为新建页,页面栈的元素数量会减1;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量不变。

// params对象内的变量是可以自定义参数名的,任意名称都可以只要在接受的时候通过传递时过来的变量名称就可以的。
router.pushUrl({url: 'pages/Second',params: {name: 'Index页面传递'}
}, router.RouterMode.Standard)

页面接受跳转传递的参数

通过 router.getParams() 方法获取页面传递过来的自定义参数。

import router from '@ohos.router'
@Entry
@Component
struct Second {// 用于接受由页面跳转传递的参数名称@State str: string = router.getParams()?.['name']// 页面刷新展示....}

页面返回及携带参数

返回上一个页面

router.back();

返回指定页面

router.back({url: 'pages/Index'});

返回并携带参数

// 需要在 router.back() 方法内类似 router.pushUrl() 的用法
router.back({url: 'pages/Index',params: {src: 'Second传回来的数据'}
})

接收返回的参数

import router from '@ohos.router'
@Entry
@Component
struct Index {//定义一个变量来接收返回的参数@State src: string = ''// 这是一个生命周期,当页面每次显示的时候都会调用onPageShow(){// 通过拿到 router 中名称为 src 的值this.src = router.getParams()?.['src']}build() {Row() {Column() {// 将返回接收到的值显示Text(this.src)Button('Next').width("90%").onClick(() => {router.pushUrl({url: 'pages/Second',params: {name: 'Index页面传递'}}, router.RouterMode.Single)})}.width('100%')}.height('100%').backgroundColor('#efefef')}
}

效果

在这里插入图片描述

在这里插入图片描述

代码

Index页面

import router from '@ohos.router'
@Entry
@Component
struct Index {@State message: string = 'Hello World'@State src: string = ''onPageShow(){this.src = router.getParams()?.['src']}build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Text(this.src)Button('Next').width("90%").onClick(() => {router.pushUrl({url: 'pages/Second',params: {name: 'Index页面传递'}}, router.RouterMode.Single)})}.width('100%')}.height('100%').backgroundColor('#efefef')}
}

Second页面

import router from '@ohos.router'
@Entry
@Component
struct Second {@State message: string = 'Hello World'@State str: string = router.getParams()?.['name']build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Text(this.str)Button('back').onClick(() => {router.back({url: 'pages/Index',params: {src: 'Second传回来的数据'}})}).width("90%")}.width('100%')}.height('100%').backgroundColor('#efefef')}
}

参考资料

官网文档

官网视频对应文档

router参考文档

官网视频

官网对应视频

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

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

相关文章

我给 PostgreSQL 官方 JDBC 驱动修复了一个高并发性能问题

这是我在 2022 年给 PostgreSQL 官方 JDBC 驱动 修复的一个高并发性能问题。 该问题影响的版本范围是 pgjdbc: 42.3.242.3.3 Issue: Concurrent performance issue in 42.3.2 caused by #2291 https://github.com/pgjdbc/pgjdbc/issues/2450 PR: Use non-synchro…

微软杀入Web3:打造基于区块链的AI产品

作者:秦晋 2023年1月,微软向 ChatGPT 创建者 OpenAI 投资 100 亿美元,在AI业界引发格外关注。此举也让微软在AI的战略探索上提前取得有利位置。 2023年3月,微软软件工程师 Albacore 披露微软正在为Edge 浏览器测试内置的非托管加密…

深入理解索引B+树的基本原理

目录 1. 引言 2. 为什么要使用索引? 3. 索引的概述 4. 索引的优点是什么? 4.1 降低数据库的IO成本,提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间 5. 索引的缺点…

微信小程序实现左滑删除

一、效果 二、代码 实现思路使用的是官方提供的 movable-area:注意点,需要设置其高度,否则会出现列表内容重叠的现象。由于movable-view需要向右移动,左滑的时候给删除控件展示的空间,故 movable-area 需要左移 left:…

静态网页和动态网页区别

1,静态网页和动态网页有何区别 1) 更新和维护 静态网页内容一经发布到网站服务器上,无论是否有用户访问,这些网页内容都是保存在网站服务器上的。如果要修改网页的内容,就必须修改其源文件,然后重新上传到服务器上。…

【论文阅读】NoDoze:使用自动来源分类对抗威胁警报疲劳(NDSS-2019)

NODOZE: Combatting Threat Alert Fatigue with Automated Provenance Triage 伊利诺伊大学芝加哥分校 Hassan W U, Guo S, Li D, et al. Nodoze: Combatting threat alert fatigue with automated provenance triage[C]//network and distributed systems security symposium.…

单链表相关操作(插入,删除,查找)

通过上一节我们知道顺序表的优点: 可随机存储(O(1)):查找速度快 存储密度高:每个结点只存放数据元素,而单链表除了存放数据元素之外,还需存储指向下一个节点的指针 http://t.csdn.cn/p7OQf …

基于ssm+vue的新能源汽车在线租赁管理系统源码和论文PPT

基于ssmvue的新能源汽车在线租赁管理系统源码和论文PPT010 开发环境: 开发工具:idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具:navcat,小海豚等 开发技术:java ssm tomcat8.5 摘 要 随着科学技术的飞速发展&#xff0…

完整版:TCP、UDP报文格式

目录 TCP报文格式 报文格式 报文示例 UDP报文格式 报文格式 报文示例 TCP报文格式 报文格式 图1 TCP首部格式 字段长度含义Source Port16比特源端口,标识哪个应用程序发送。Destination Port16比特目的端口,标识哪个应用程序接收。Sequence Numb…

如何在iPhone手机上修改手机定位和模拟导航?

如何在iPhone手机上修改手机定位和模拟导航? English 首先,你需要在Mac电脑上下载安装 Location Simulator/定位模拟工具 和 Runner 这两款应用程序。 完成安装后,打开软件,并用USB连接手机设备 修改iPhone手机定位和模拟导航 …

第二部分:AOP

一、AOP简介 AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 AOP是OOP(面向对象编程)的进阶版。 作用:在不改变原始设计的基础上为其进行功能增强。 spring理念&#x…

嵌入式Linux驱动开发系列五:Linux系统和HelloWorld

三个问题 了解Hello World程序的执行过程有什么用? 编译和执行:Hello World程序的执行分为两个主要步骤:编译和执行。编译器将源代码转换为可执行文件,然后计算机执行该文件并输出相应的结果。了解这个过程可以帮助我们理解如何将代码转化…