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

这篇具有很好参考价值的文章主要介绍了页面跳转和两个页面之间的数据传递-鸿蒙ArkTS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS,鸿蒙APP开发,学习笔记,harmonyos,华为

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS,鸿蒙APP开发,学习笔记,harmonyos,华为

关于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')
  }
}

效果

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS,鸿蒙APP开发,学习笔记,harmonyos,华为

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS,鸿蒙APP开发,学习笔记,harmonyos,华为

代码

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参考文档

官网视频

官网对应视频文章来源地址https://www.toymoban.com/news/detail-658960.html

到了这里,关于页面跳转和两个页面之间的数据传递-鸿蒙ArkTS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3 的router跳转 - 页面同tab跳转和打开新tab跳转

    当前页需要的方法 主要是获得Vue Router实例暴露的一些方法,使用这些方法,进行路由操作 引入 调用 目标页需要的方法 主要是对传递来的参数,进行接收,比如查询参数,页面路径,标题,hash等 调用 route里面的数据会被处理成响应式 页面同tab跳转 push(to) :跳转到指定的路

    2024年02月01日
    浏览(42)
  • 利用webview 内嵌实现小程序,h5 ,app 页面跳转和数据通讯,附带实现pdf文件的预览(兼容ios和安卓)

    承载网页的容器。会自动铺满整个小程序页面, 个人类型的小程序暂不支持使用。 客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效 相关的属性说明:开放能力 / web-view (qq.com) 2.bindmessage 可以实现网页端和小程序之间通讯, 但只在特定时机触发 网页端向小程序

    2024年02月02日
    浏览(67)
  • js(javascript)中页面跳转和窗口关闭等操作

    1、self.loaction.href=\\\"/具体路径\\\" 2、location.href=\\\"/具体路径\\\" 3、windows.loaction.href=\\\"/具体路径\\\" 4、this.loaction.href=\\\"/具体路径\\\" parent.location.href=\\\"/具体路径\\\" top.location.href=\\\"/具体页面\\\" window.location.reload() 使用该方法刷新页面时,如果有数据待提交,会提示是否提交 如果页面中自定义了f

    2024年02月16日
    浏览(49)
  • 微信小程序页面的跳转和导航的配置和vant组件

    结论: navigateTo ,  redirectTo  只能打开非 tabBar 页面。 switchTab  只能打开 tabBar 页面。 reLaunch  可以打开任意页面。 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。 调用页面路由带的参数可以在目标页面的 onLoad 中获取。 (1)当我们使用 redirectTo跳

    2024年02月09日
    浏览(52)
  • 小程序页面之间数据传递的五种方法

    使用 wx.navigateTo() 时,在 url 中拼接,这种方法适用于数据量少的情况 跳转前A页面在 url 中拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔; 跳转到B页面在生命周期函数 onLoad 中接收 如果需要传递对象或数组,需先将对象或数据转为JSON字符

    2024年02月10日
    浏览(46)
  • QT 多界面跳转以及窗口之间参数传递

    之前一直用的是c#,由于最近要使用CC来二次开发,所以先熟悉一下QT。 1、从一个界面跳到另外一个界面不需要返回 2、从一个界面跳到另外一个界面需要返回 1、新增主窗口 主窗口 第二个窗口: 原理:  注意点: 1、必须在新的窗口中传入当前的窗口的指针   本质上是类和

    2024年02月10日
    浏览(45)
  • 鸿蒙开发ArkTS通过Time.before及after方法判断两个时间的先后(类似于java的Time类)

    本文使用ArkTS实现了类似于java的Time类的功能方法。 OpenHarmony或者HarmonyOS的 ArkTS 是否有类似于java的Time类,可以通过Time.before及after方法判断两个时间的先后 ? 可以实现此功能 类似于下面的代码:

    2024年02月04日
    浏览(37)
  • ArkTS声明式开发范式:赋值显示,css样式,点击事件,页面跳转

    页面地址:src/main/ets/pages/Second.ets

    2024年02月01日
    浏览(49)
  • 鸿蒙 ArkTS Tabs组件实现类微信(可滑动的)tabBar页签切换页面功能

    :harmonyOS   鸿蒙开发  ArkTS  TabContent 使用场景:类微信底部导航栏,点击/左右滑动切换页面并加载数据 开发环境:ArkTS3.1  API9  Phone设备 HMOS Dev官方文档:文档中心 演示效果: 目录 完整Demo已提交至Gitee 搭建页面 自定义TabContent(往后翻有完整代码) 思路 开始 完

    2024年02月04日
    浏览(55)
  • 小程序中实现两个或者多个小程序之间互相跳转

    前言:         小程序中实现两个或者多个小程序之间互相跳转,a小程序带参跳转到b小程序中。 点我 https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html a小程序:app.json: //数组是其他小程序的appid b小程序中: app.json: //数组是其他小程序的appid 1、页面

    2023年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包