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

【鸿蒙应用ArkTS开发系列】- 页面跳转及传参

先看下效果图

大致实现的功能点:

  1. 从Indext页面跳转到Second页面,传递两个参数,一个字符串,一个数量;
  2. Second获取Index页面传递的数据;
  3. Second页面点击返回弹窗;
  4. Second页面返回携带参数数据;
  5. Index获取Second页面回传数据。

下面我们一个一个讲解:

1、从Indext页面跳转到Second页面,并传递参数

 

import router from '@ohos.router';@Entry
@Component
struct Index {@State message: string = 'Index Page'@State fromSecondMessage: string  = ''build() {Column() {Column() {Text(`${this.message}`).width("300vp").height("60vp").textAlign(TextAlign.Center).fontSize("50fp").fontWeight(FontWeight.Normal)Button("Next").borderRadius("5vp").width("80%").height("50vp").margin({ top: "10vp" }).onClick(this.clickNext.bind(this))Text(this.fromSecondMessage).fontSize('20vp').textAlign(TextAlign.Center).margin({top:'10vp'})}.width("100%").height("100%").justifyContent(FlexAlign.Center)}.width("100%").height("100%")}clickNext() {router.pushUrl({url: "pages/Second",params: {name: '我是来自页面Index的数据',count: 100}}, router.RouterMode.Single)}
}

使用router 进行页面跳转,这里使用pushUrl进行页面跳转,除了pushUrl外,还可以使用replaceUrl进行页面替换,其中参数是RouterOptions对象,主要是url跟params,url是页面路径,params是传递数据,类型为object。

最后面参数是RouterMode.Single,

RouterMode9+

路由跳转模式。

系统能力: SystemCapability.ArkUI.ArkUI.Full。

名称

说明

Standard

标准模式。

目标页面会被添加到页面路由栈顶,无论栈中是否存在相同url的页面。

Single

单实例模式。

如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近的页面会被移动到栈顶,移动后的页面为新建页。

如目标页面的url在页面栈中不存在同url页面,按标准模式跳转。

2、Second获取Index页面传递的数据

import router from '@ohos.router';@Entry
@Component
struct Second {@State message: string = 'Second Page'@State paramsFromIndex: object = router.getParams()build() {Row() {Column() {Text(this.message).margin({ top: "10vp" }).fontSize(50).fontWeight(FontWeight.Normal)Text(this.paramsFromIndex?.['name'] + ",count:" + this.paramsFromIndex?.['count']).margin({ top: "10vp" }).fontSize(20).fontWeight(FontWeight.Normal).margin({top:"10vp"})Button("Back").width("80%").height("50vp").margin({top:"10vp"})}.width('100%')}.height('100%')}}

使用router.getParams()获取Index页面传递的数据。

3、Second页面点击返回弹窗

router.enableBackPageAlert({message: "确认关闭当前页面吗?"})router.back()

调用enableBackPageAlert,触发返回询问弹窗,点击取消,不会触发back方法,点击确定,触发返回。

4、Second页面返回携带参数数据

router.back({url:'pages/Index',params: {src: "这是来自Second Page的数据"}})

5、Index获取Second页面回传数据

回到Index页面后怎么获取Second页面的回传数据呢,也是使用 router.getParams() 进行数据获取,那在什么时候函数里进行获取呢,可以跟Second页面中一样,使用

@State params: object = router.getParams()

这样定义获取吗,其实是不行的,重新回到Index页面后,上述代码并不会执行,这个时候我们应该在页面生命周期函数里进行获取。

  onPageShow() {this.fromSecondMessage = router.getParams()?.['src']}

本文到此结束。

http://www.lryc.cn/news/34840.html

相关文章:

  • StringBuilder 类
  • kubectl-k8s用户切换
  • 【面试题】三道面试题让你掌握JavaScript中的执行上下文与作用域以及闭包
  • 计算机网络-- 应用层(day08)
  • English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一
  • SpringBoot——统一功能处理
  • ORACLE SQL格式化小数点
  • 【信息学奥数】—— 第一部分 C++语言 知识总结
  • video层级过高,以及界面使用多个video时,在安卓APP上同时播放的问题(uniapp)
  • C++基础了解-14-C++ 字符串
  • 浅谈几种网络攻击及攻防原理
  • Kafka消息中间件(Kafka与MQTT区别)
  • Go垃圾回收原理
  • Coredump-N: stack 空间被临时变量吃满,导致内存访问出现问题
  • GO中使用viper读取配置文件
  • webpack dll 提升构建速度
  • C++面向对象编程之三:初始化列表、类对象作为类成员、静态成员
  • 跨域问题解决方案
  • Vue3电商项目实战-购物车模块7【20-登录后-批量删除、21-登录后-选中状态修改数量、22-登录后-全选反选、23-登录后-修改规格、24-下单结算】
  • 软件测试之快速熟悉项目
  • 软考高级信息系统项目管理师系列之二十一:项目风险管理
  • 打包成JAR文件和WAR文件,到底有什么区别?
  • STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式1)
  • 在教学中常被问到的几个vue3.x与typescript的问题,统一解答
  • 纯css实现超炫酷的星空背景按钮
  • openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
  • 计及需求响应的改进灰狼优化算法求解风、光、柴、储容量优化配置(Matlab代码实现)
  • Elasticsearch使用——高级篇
  • Java网络爬虫-HttpClient工具类
  • LeetCode203_203. 移除链表元素