前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HarmonyOS开发学习(1)–多页面开发

HarmonyOS开发学习(1)–多页面开发

作者头像
摸鱼的G
发布2024-03-22 09:37:32
1110
发布2024-03-22 09:37:32
举报
文章被收录于专栏:火属性小虫火属性小虫

HarmonyOS开发学习(1)–多页面开发

UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。

每一个UIAbility实例,都对应于一个最近任务列表中的任务。

一个UIAbility可以对应于多个页面,建议将一个独立的功能模块放到一个UIAbility中,以多页面的形式呈现。例如新闻应用在浏览内容的时候,可以进行多页面的跳转使用。

UIAbility内页面的跳转和数据传递

页面跳转等操作都依靠页面路由组件router来实现,通过页面url来找到目标页面,从而实现跳转,包括跳转到Ability的指定页面、用UIAbility内的某个页面替换当前页面、返回上一页等。

首先,我们需要导入router模块:

代码语言:javascript
复制
import router from '@ohos.router';

页面跳转的方式:

pushUrl():

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

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

当页面栈的元素数量较大或者超过32时,可以通过调用router.clear()方法清除页面栈中的所有历史页面,仅保留当前页面作为栈顶页面。

代码语言:javascript
复制
router.pushUrl({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
}, router.RouterMode.Single)
replaceUrl():

同样提供了mode参数来配置单例模式或者多例模式。与pushUrl()不同的是,该方法会将目标页面替换当前页面,旧页面会被销毁:

代码语言:javascript
复制
router.replaceUrl({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
}, router.RouterMode.Single)

其次,我们需要实现页面间参数的接受,可以调用router.getParams()来获取传递过来的参数

代码语言:javascript
复制
import router from '@ohos.router';

@Entry
@Component
struct Second {
  @State src: string = (router.getParams() as Record<string, string>)['src'];
  // 页面刷新展示
  // ...
}

页面返回和参数接收

我们可以调用router.back()方法来实现返回到上一个页面,同时也可以在调用该方法时增加可选的options参数(增加url参数)返回到指定页面。

  • 调用router.back()返回的目标页面需要在页面栈中存在才能正常跳转。
  • 例如调用router.pushUrl()方法跳转到Second页面,在Second页面可以通过调用router.back()方法返回到上一个页面。
  • 例如调用router.clear()方法清空了页面栈中所有历史页面,仅保留当前页面,此时则无法通过调用router.back()方法返回到上一个页面。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HarmonyOS开发学习(1)–多页面开发
  • UIAbility内页面的跳转和数据传递
    • 页面跳转的方式:
      • pushUrl():
      • replaceUrl():
    • 页面返回和参数接收
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档