当前位置:   article > 正文

【鸿蒙应用ArkTS开发系列】- 页面跳转及传参_ark ui加载首页携带参数

ark ui加载首页携带参数

先看下效果图

大致实现的功能点:

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

下面我们一个一个讲解:

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

 

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct Index {
  5. @State message: string = 'Index Page'
  6. @State fromSecondMessage: string = ''
  7. build() {
  8. Column() {
  9. Column() {
  10. Text(`${this.message}`)
  11. .width("300vp")
  12. .height("60vp")
  13. .textAlign(TextAlign.Center)
  14. .fontSize("50fp")
  15. .fontWeight(FontWeight.Normal)
  16. Button("Next")
  17. .borderRadius("5vp")
  18. .width("80%")
  19. .height("50vp")
  20. .margin({ top: "10vp" })
  21. .onClick(this.clickNext.bind(this))
  22. Text(this.fromSecondMessage)
  23. .fontSize('20vp')
  24. .textAlign(TextAlign.Center)
  25. .margin({top:'10vp'})
  26. }
  27. .width("100%")
  28. .height("100%")
  29. .justifyContent(FlexAlign.Center)
  30. }
  31. .width("100%")
  32. .height("100%")
  33. }
  34. clickNext() {
  35. router.pushUrl({
  36. url: "pages/Second",
  37. params: {
  38. name: '我是来自页面Index的数据',
  39. count: 100
  40. }
  41. }, router.RouterMode.Single)
  42. }
  43. }

使用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页面传递的数据

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct Second {
  5. @State message: string = 'Second Page'
  6. @State paramsFromIndex: object = router.getParams()
  7. build() {
  8. Row() {
  9. Column() {
  10. Text(this.message)
  11. .margin({ top: "10vp" })
  12. .fontSize(50)
  13. .fontWeight(FontWeight.Normal)
  14. Text(this.paramsFromIndex?.['name'] + ",count:" + this.paramsFromIndex?.['count'])
  15. .margin({ top: "10vp" })
  16. .fontSize(20)
  17. .fontWeight(FontWeight.Normal)
  18. .margin({top:"10vp"})
  19. Button("Back")
  20. .width("80%")
  21. .height("50vp")
  22. .margin({top:"10vp"})
  23. }
  24. .width('100%')
  25. }
  26. .height('100%')
  27. }
  28. }

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

3、Second页面点击返回弹窗

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

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

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

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

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

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

@State params: object = router.getParams()

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

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

本文到此结束。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/318601
推荐阅读
相关标签
  

闽ICP备14008679号