HarmonyOS实战入门开发-页面跳转和传参的两种方式对比

654 篇文章 4 订阅
648 篇文章 6 订阅

这次分享页面跳转和传参。

先举一个例子来慢慢延伸的区实现,看下图,如果你要做一个商品列表数据,当点击一个商品item的时候 需要进入下一个页面增加一个点击事件。

在这里插入图片描述

我们先来实现一个组件的点击事件,需要使用到通用事件onClick:

Column(){
  Button("点击进行页面跳转")
    .height(50)
    .width('100%')
    .onClick(()=>{
      console.info("点击事件");
    })
}
.height('100%')
.justifyContent(FlexAlign.Center)

图片

点击按钮后 console.info打印的内容可以在控制台中看到:

图片

这里说一个习惯性操作,如果在一个布局中逻辑太多,比如点击事件,最后把操作放在一个函数中调用操作,调用如下:

struct PageRedirection {
  build(){
    Column(){
      Button("点击进行页面跳转")
        .height(50)
        .width('100%')
        .onClick(()=>{
          this.optionOnclick()
        })
    }
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
  // 点击事件
  optionOnclick() {
    console.info("点击事件");
  }
}

图片

有了点击事件,我们就可以在点击按钮的时候跳转下一级页面。

下一步,我们需要先创建跳转的页面。

创建页面方式,

1,右键pages文件夹,选择ArkTS File可以新建页面,但是只会创建一个空文件并且需要自己到main_pages.json中配置路径,不配做路径无法进行页面跳转。

2,右键pages文件夹,选择Page也可以新建页面,创建Page页面会自动配置路径,并且有默认界面 Hello World 。

所以如果需要一个单独页面我建议大家选择Page创建文件。

图片

页面跳转同样有两种方式:

先来看第一种方式 需要通过router来实现。

router.pushUrl,在一个导航栈内跳转下一级页面,跳转后可以返回。

router.replaceUrl,用应用内的某个页面替换当前页面,并销毁被替换的页面,替换后不能返回。

正常情况下我们选择第一种,如果是一个页面重复进入业务需要可以使用,代码如下:

使用页面跳转需要引用router库:import router from ‘@ohos.router’;

 optionOnclick() {
    console.info("点击事件");
    router.pushUrl({
      url:"pages/componentOption/EnterPage", //路径
      params:{ title: '页面跳转' } //参数
    }).then(() => {
      //success
    }).catch(err => {
      //fail
    })
  }

这段代码向EnterPage页面传了一个参数title,在EnterPage页面使用以下代码获取参数:

import router from '@ohos.router';
@Entry
@Component
struct EnterPage {
  @State title: string = router.getParams()['title'] // 接收标题信息
  build() {
    Row() {
      Column() {
        Text(this.title)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

返回上一级页面:

Column() {
  Text(this.title).fontSize(30)
    .fontWeight(FontWeight.Bold)
    .onClick(()=>{
      router.back() // 页面返回
    })
}
.width('100%')

再来看第二中方式 Navigator。

在说第二种方式之前,先来说说我对这两种方式的理解, Navigator是一个组件,比如在一个列表里,每项包含图片,标题文本,时间文本,这个时候想点击每项跳转到详情页,而每项最外面层就可以用Navigator组件包住图片,标题文本,时间文本来实现跳转。

而在详情页里,只是想点击某个按钮返回上一页或下页时,就可以使用Router接口API来实现。用Navigator 来实现,先看点击跳转的页面,

Column(){
  Navigator({ target: 'pages/componentOption/EnterPage',
    type: NavigationType.Push }) {
    Button("Navigator跳轉").fontSize(22).height(80).width('100%')
      }.params({ title: 'Navigator跳轉' })
}
.height('100%')
.justifyContent(FlexAlign.Center)

同样的这段代码向EnterPage页面传了一个参数title,在EnterPage页面同样使用以下代码获取参数:

import router from '@ohos.router';
@Entry
@Component
struct EnterPage {
  @State title: string = router.getParams()['title'] // 接收标题信息
  build() {
    Row() {
      Column() {
        Text(this.title).fontSize(30)
          .fontWeight(FontWeight.Bold)
          .onClick(()=>{
            router.back() // 页面返回
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程》以及《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

《鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.……

在这里插入图片描述

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

在这里插入图片描述

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG

在这里插入图片描述

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
van-cell 组件可以通过 :to 属性进行页面跳转,并传递参数。在给 :to 绑定的对象中,可以使用 name 和 params 两个属性来进行传参。name 表示目标路由的名称,params 表示传递的参数。在模板中,可以这样使用 van-cell 组件进行页面跳转传参: ``` <van-cell :to="{ name: 'article', params: { articleId: article.id } }"> <div slot="title" class="title">{{ article.title }}</div> </van-cell> ``` 其中,name 的值为目标路由的名称,params 的值为一个对象,包含需要传递的参数。在这个例子中,articleId 是需要传递的参数,它的值是通过 article.id 获取得到的。这样就可以在跳转到 article 页面时,传递 articleId 参数给目标页面进行使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue实现动态路由传参(页面跳转传参):](https://blog.csdn.net/weixin_53791978/article/details/126362461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue手撸移动端后台(8)页面传参和数据删除](https://blog.csdn.net/qq_21019419/article/details/89916384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值